コード例 #1
0
 private function createPermissions()
 {
     $config = config('acl');
     $this->validateConfig($config['allowedModels']);
     $this->validateConfig($config['permissions']);
     // allowedModels comes first
     // because there should be (# of allowedModels x # of permissions)
     // ['Model1', 'Model2', ...]
     foreach ($config['allowedModels'] as $allowedModel) {
         // Loop through permissions
         // ['member' => ['create', 'edit', ...]]
         // Remember one Role can have more than one Permission
         foreach ($config['permissions'] as $roleSlug => $permissions) {
             $this->validateConfig($permissions);
             // Generate a single Permission
             // Here we create given permissions,
             // e.g. ['create', 'edit', ...]
             foreach ($permissions as $permission) {
                 $newPerm = Permission::create(['name' => ucfirst($permission), 'slug' => $permission]);
                 // Attach generated Permission to each Role
                 // If there were n Permissions on a Role,
                 // There should be n entries of Permission on Role/Permission pivot
                 if ($role = Role::whereSlug($roleSlug)->first()) {
                     $role->attachPermission($newPerm);
                 }
                 // Set default allowed Model
                 // for so-called Entity Check
                 $newPerm->model = $allowedModel;
                 $newPerm->save();
             }
         }
     }
 }
コード例 #2
0
ファイル: DatabaseSeeder.php プロジェクト: mrcoco/base
 /**
  * Run the database seeds.
  *
  * @return void
  */
 public function run()
 {
     Model::unguard();
     factory(\App\User::class, 50)->create()->each(function ($user) {
         $user->attachRole(\Bican\Roles\Models\Role::whereSlug('user')->first());
     });
     Model::reguard();
 }
コード例 #3
0
ファイル: UsersTableSeeder.php プロジェクト: valdinei/rest
 public function run()
 {
     $faker = $this->beginSeeding(new App\User());
     $roles = Role::lists('id')->toArray();
     $me = factory(App\User::class, 'me')->create();
     $me->attachRole(Role::whereSlug('root')->first());
     $users = factory(App\User::class, 5)->create()->each(function ($user) use($faker, $roles) {
         $user->attachRole($faker->randomElement($roles));
     });
     $this->endSeeding();
 }
コード例 #4
0
ファイル: UserRepository.php プロジェクト: valdinei/rest
 /**
  * Create a user if not exists
  *
  * @param array $userData
  * @param       $listener
  *
  * @return mixed
  * @throws \Exception
  */
 public function firstOrCreate(array $userData, SocialRedirectContract $listener)
 {
     $user = $this->model->whereEmail($userData['email'])->first();
     if ($user) {
         $this->updateUserInfo($user, $userData);
         if ($user->activated != 1) {
             event('UserActivated', [$user]);
         }
         flash(trans('auth.successLogin', ['name' => $user->name]));
     } else {
         $user = $this->model->create($userData);
         // Grant default Role to this User
         $defaultRole = Role::whereSlug(config('acl.defaultRole'))->first();
         $user->attachRole($defaultRole);
         $user = $user->fresh();
         event('UserActivated', [$user]);
         flash(trans('auth.activated'));
     }
     return $listener->onSocialLoginSuccess($user);
 }
コード例 #5
0
ファイル: AuthEventListener.php プロジェクト: valdinei/rest
 /**
  * Handle user's email confirmation event
  *
  * @param User $user
  *
  * @return mixed
  */
 public function onUserActivated(User $user)
 {
     if ($user->activated != 1) {
         // Update 'activated' attributes
         $now = new \DateTime();
         $user->activated_at = $now->format('Y-m-d H:i:s');
         $user->activated = 1;
         $user->activation_code = null;
         $user->save();
         // Promote user role to 'member'
         $user->attachRole(Role::whereSlug('member')->first());
         // Send welcome email
         $email = $user->email;
         $subject = trans('email-subject.activated');
         $view = 'emails.activated';
         $link = route('session.create');
         $data = compact('subject', 'link');
         $cc = [];
         $bcc = [];
         $this->mailer->send($email, $subject, $view, $data, $cc, $bcc);
     }
     return true;
 }