Adicionando funções em massa a um usuário no Laravel

O Laravel não vem com nenhum gerenciamento de função embutido. Se você tem um usuário e modelo de função configurado e já tem um usuário, função e tabela user_role criada, então você pode usar as duas funções a seguir em seu modelo de usuário para adicionar permissões para um usuário em massa com base em certos “títulos”.

Nota: Esta função precisará ser editada um pouco para corresponder ao seu aplicativo específico.

/**
* Get key in array with corresponding value

*

* @return int

*/

private function getIdInArray($array, $term)
{
foreach ($array as $key => $value) {
if ($value == $term) {
return $key;
}
}

throw new UnexpectedValueException;
}

/**
* Add roles to user to make them a concierge

*/

public function makeEmployee($title)
{
$assigned_roles
= array();

$roles
= array_fetch(Role::all()->toArray(), 'name');

switch ($title) {
case 'super_admin':
$assigned_roles
[] = $this->getIdInArray($roles, 'edit_customer');
$assigned_roles
[] = $this->getIdInArray($roles, 'delete_customer');
case 'admin':
$assigned_roles
[] = $this->getIdInArray($roles, 'create_customer');
case 'concierge':
$assigned_roles
[] = $this->getIdInArray($roles, 'add_points');
$assigned_roles
[] = $this->getIdInArray($roles, 'redeem_points');
break;
default:
throw new Exception("The employee status entered does not exist");
}

$this
->roles()->attach($assigned_roles);
}

Escrevi uma postagem no blog que descreve isso em mais detalhes em: http://alexsears.com/article/adding-roles-to-laravel-users