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(); } } } }
/** * 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(); }
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(); }
/** * 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); }
/** * 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; }