public function store(Request $request) { if (!Sentinel::hasAccess(config('eztool.acl.permissions.update'))) { abort(401, 'no permissions to access'); } $roles = $request->get('role'); if ($roles) { foreach ($roles as $role_id => $permissions) { foreach ($permissions as $permission => $value) { $permissions[$permission] = (bool) $value; } $role = \Sentinel::findRoleById($role_id); $role->permissions = $permissions; $role->save(); } } return response()->json(true); }
/** * Store a newly created resource in storage. * * @param \Illuminate\Http\Request $request * @return \Illuminate\Http\Response */ public function store(Request $request) { // dd($request->assign_permission); //array to hold final permission values $array_of_permissions = Helper::prepPermissions($request->assign_permission, 'true'); //create new role $role = \Sentinel::getRoleRepository()->createModel()->create(['name' => $request->role, 'slug' => Helper::makeSlug($request->role)]); //retreive id of last inserted role $role_id = $role->id; $role = \Sentinel::findRoleById($role_id); //assign permissions to role $role->permissions = $array_of_permissions; $role->save(); //assign newly created role to coder $credentials = ['login' => '*****@*****.**']; $user = \Sentinel::findByCredentials($credentials); $role->users()->attach($user); return \Redirect::to('settings/roles'); }
public function save() { $name = $this->name(); //fetch the selected roles from the temporary //form field $input = \Input::all(); $selected_roles = array_get($input, $name); if ($selected_roles === null) { $selected_roles = []; } //remove all roles foreach ($this->instance()->roles->toArray() as $key => $value) { $role = \Sentinel::findRoleById($value['id']); $this->instance()->roles()->detach($role); } //add only the new selected foreach ($selected_roles as $key => $id) { $role = \Sentinel::findRoleById($id); $this->instance()->roles()->attach($role); } }
/** * @param int $parent_role_id * @return int */ public function updateHierarchy($parent_role_id) { // we get the roles concerned by the rank incrementation regarding the given parent role if ($parent_role = \Sentinel::findRoleById($parent_role_id)) { // if a parent is defined // we get the roles hierarchically inferiors to the parent $roles = \Sentinel::getRoleRepository()->where('rank', '>', $parent_role->rank)->orderBy('rank', 'desc')->get(); } else { // if the role has to be the master role // we get all roles $roles = \Sentinel::getRoleRepository()->orderBy('rank', 'desc')->get(); } // we increment the rank of the selected roles foreach ($roles as $r) { $r->rank += 1; $r->save(); } // we get the new rank to apply to the current role $new_rank = $parent_role ? $parent_role->rank + 1 : 1; return $new_rank; }
public function run() { /* move all groups to roles table */ $groups = DB::select('select * from groups'); foreach ($groups as $group) { $id = $group->id; $name = $group->name; $slug = str_slug($name); if ($group->id == '1') { $permissions = array('admin' => 1); } else { $permissions = array(); } Sentinel::getRoleRepository()->createModel()->create(['id' => $id, 'name' => $name, 'slug' => $slug, 'permissions' => $permissions]); } /* move users_groups data into role_users table */ $users_groups = DB::select('select * from users_groups'); foreach ($users_groups as $user_group) { $user = Sentinel::findById($user_group->user_id); $group = DB::table('groups')->where('id', '=', $user_group->group_id)->first(); $role_current = DB::table('roles')->where('name', '=', $group->name)->first(); $role = Sentinel::findRoleById($role_current->id); $role->users()->attach($user); } $this->command->info('groups, users_groups successfully migrated to roles, role_users tables'); /* insert each user into activations table */ $users = DB::select('select * from users'); foreach ($users as $user) { $current_user = Sentinel::findById($user->id); $activation = Activation::create($current_user); if ($user->activated) { Activation::complete($current_user, $activation->code); } } $this->command->info('activations created successfully'); }
switch ($permission) { case 'allow': $group->addPermission($ident); break; case 'deny': $group->addPermission($ident, false); break; default: $msg = 'Not allowed permission [' . $permission . '] for [' . $ident . ']'; throw new \RuntimeException($msg); } } } $group->save(); }, 'update' => function ($idRow, $patternValues, $values) { $group = \Sentinel::findRoleById($idRow); foreach ($patternValues as $permissionGroup => $permissionActions) { foreach ($permissionActions as $permissionAction => $permission) { $ident = $permissionGroup . '.' . $permissionAction; switch ($permission) { case 'allow': $group->addPermission($ident); break; case 'deny': $group->addPermission($ident, false); break; default: $msg = 'Not allowed permission [' . $permission . '] for [' . $ident . ']'; throw new \RuntimeException($msg); } }
/** * Update the specified resource in storage. * * @param \Illuminate\Http\Request $request * @param int $id * @return \Illuminate\Http\Response */ public function update(Request $request, $id) { // dd($request); //get user u ant to update $user = \Sentinel::findById($id); //get the persons details $staff = Staff::find($request->user); $data = $request->except('_token'); $rules = ['password' => 'min:4|required']; $validator = \Validator::make($data, $rules); if ($validator->passes()) { //array to hold final permission values $array_of_permissions = Helper::prepPermissions($request->exempt_permission, 'false'); $credentials = ['email' => $staff->email, 'password' => $request->password, 'permissions' => $array_of_permissions, 'staff_id' => $staff->id, 'first_name' => $staff->fname, 'last_name' => $staff->lname]; //update user $user = \Sentinel::update($user, $credentials); //get the id(s) of the current roles of this user in an array $current_roles = array(); foreach ($user->roles as $value) { $current_roles[] = $value->id; } //compute role(s) to add $add_roles = array_diff($request->assign_roles, $current_roles); //compute role(s) to delete $delete_roles = array_diff($current_roles, $request->assign_roles); //update user role(s) $user = \Sentinel::findById($user->id); //add ne role(s) foreach ($add_roles as $role_id) { $role = \Sentinel::findRoleById($role_id); $role->users()->attach($user); } //delete role(s), if any foreach ($delete_roles as $role_id) { \DB::table('role_users')->where('role_id', $role_id)->where('user_id', $user->id)->delete(); } return \Redirect::to('settings/users/create'); } else { return \Redirect::back()->withInput()->withErrors($validator); } }
public static function getRolePermissions($role_id) { return array_keys(\Sentinel::findRoleById($role_id)->permissions); }
<?php return array('db' => array('table' => 'roles', 'order' => array('id' => 'ASC'), 'pagination' => array('per_page' => 12)), 'options' => array('caption' => 'Группы пользователей'), 'position' => array('tabs' => array('Info' => array('slug', 'name'), 'Permissions' => array('pattern.group_permissions'))), 'fields' => array('id' => array('caption' => '#', 'type' => 'readonly', 'class' => 'col-id', 'width' => '1%', 'hide' => true, 'is_sorting' => true), 'slug' => array('caption' => 'Идентификатор', 'type' => 'text', 'filter' => 'text', 'is_sorting' => true, 'validation' => array('server' => array('rules' => 'required'), 'client' => array('rules' => array('required' => true), 'messages' => array('required' => 'Обязательно к заполнению')))), 'name' => array('caption' => 'Название', 'type' => 'text', 'filter' => 'text', 'is_sorting' => true), 'pattern.group_permissions' => ['caption' => 'Права', 'hide_list' => true]), 'actions' => array('search' => array('caption' => 'Поиск'), 'insert' => array('caption' => 'Добавить'), 'update' => array('caption' => 'Редактировать'), 'delete' => array('caption' => 'Удалить')), 'callbacks' => array('handleDeleteRow' => function ($id) { $role = \Sentinel::findRoleById($id); $role->delete(); return array('id' => $id, 'status' => true); }));