예제 #1
0
파일: AuthService.php 프로젝트: profio/auth
 public function addAccesss(Role $role, Menu $menu, $permission_ids = [])
 {
     $menu->roles()->attach($role->id);
     if (count($permission_ids) > 0) {
         $role->permissions()->attach($permission_ids);
     }
 }
예제 #2
0
 public function mapping($id, Request $request)
 {
     $workflow = Workflow::find($id);
     if ($request->isMethod('get')) {
         $workflow->load('menus');
         $title = 'Pemetaan Proses Aliran Kerja';
         $roles = Role::get()->pluck('display_name', 'id');
         $menus = Menu::get()->pluck('name', 'id');
         return view('profio/auth::workflow.mapping', compact('workflow', 'title', 'roles', 'menus'));
     } else {
         $workflow->menus()->detach();
         $workflow->permissions()->detach();
         $role_ids = $request->input('role_ids');
         $menu_ids = $request->input('menu_ids');
         DB::transaction(function () use($role_ids, $workflow, $menu_ids) {
             foreach ($role_ids as $key => $role_id) {
                 $workflow->menus()->attach($menu_ids[$key], ['role_id' => $role_id]);
                 $menu = Menu::find($menu_ids[$key]);
                 foreach ($menu->permissions as $permission) {
                     $workflow->permissions()->attach($permission->id, ['role_id' => $role_id]);
                 }
             }
             flash()->success('Pemetaan proses aliran kerja berhasil disimpan.');
         });
         return redirect()->back();
     }
 }
예제 #3
0
파일: Role.php 프로젝트: profio/auth
 public function addMenu($name, $url, $icon = null, $parent = null)
 {
     $menu = new Menu();
     $menu->name = $name;
     $menu->url = $url;
     $menu->icon = $icon;
     if (!$parent instanceof Menu) {
         $parent = Menu::find($parent);
     }
     if (!is_null($parent)) {
         $menu->parent()->associate($menu);
     }
     $menu->save();
     $this->menus()->attach($menu);
     return $menu;
 }
예제 #4
0
 public function manageMenu($id, Request $request)
 {
     if ($request->isMethod('get')) {
         $role = Role::findOrFail($id);
         return view('profio/auth::role.manage-menu', compact('role'));
     } else {
         $menus = $request->get('menus');
         $parents = $request->get('parents');
         for ($i = 0; $i < count($menus); $i++) {
             $menu = Menu::find($menus[$i]);
             $menu->position = $i + 1;
             $menu->parent()->associate(Menu::find($parents[$i]));
             $menu->save();
         }
         return redirect()->back();
     }
 }
예제 #5
0
 public function destroy($id)
 {
     Menu::destroy($id);
     flash()->success('Menu berhasil dihapus.');
     return redirect('menu');
 }