/**
  * @return void
  */
 private function fillAlowedRolesArray()
 {
     $roles = $this->role->where('name', '<>', 'Reviewer')->where('name', '<>', 'Member')->get();
     foreach ($roles as $role) {
         array_push($this->allowed_roles, $role->id);
     }
 }
 public function __construct()
 {
     $this->admin = config('blogify.blogify.admin_user');
     // Get the id of the admin role
     $role = Role::where('name', '=', 'Admin')->first();
     $this->admin_role = $role->id;
 }
 public function run()
 {
     Role::create(["hash" => blogify()->makeHash('roles', 'hash', true), "name" => "Admin"]);
     Role::create(["hash" => blogify()->makeHash('roles', 'hash', true), "name" => "Author"]);
     Role::create(["hash" => blogify()->makeHash('roles', 'hash', true), "name" => "Reviewer"]);
     Role::create(["hash" => blogify()->makeHash('roles', 'hash', true), "name" => "Member"]);
 }
 public function scopeReviewers($query)
 {
     $reviewer_role_id = Role::whereName('Reviewer')->first()->id;
     $admin_role_id = Role::whereName('Admin')->first()->id;
     return $query->where(function ($q) use($reviewer_role_id, $admin_role_id) {
         $q->whereRoleId($reviewer_role_id)->orWhere('role_id', '=', $admin_role_id);
     })->where('id', '<>', Auth::user()->id)->get();
 }
 /**
  * @param \jorenvanhocht\Blogify\Requests\UserRequest $data
  * @param string $hash
  * @return array
  */
 private function storeOrUpdateUser($data, $hash = null)
 {
     $password = null;
     if (!isset($hash)) {
         $password = $this->blogify->makeHash();
         $user = new User();
         $user->hash = $this->blogify->makeHash('users', 'hash', true);
         $user->password = $this->hash->make($password);
         $user->username = $this->blogify->generateUniqueUsername($data->name, $data->firstname);
         $user->lastname = $data->name;
         $user->firstname = $data->firstname;
         $user->email = $data->email;
     } else {
         $user = $this->user->byHash($hash);
     }
     $user->role_id = $this->role->byHash($data->role)->id;
     $user->save();
     return ['user' => $user, 'password' => $password];
 }
 /**
  * Create a new filter instance.
  *
  * @param \Illuminate\Contracts\Auth\Guard $auth
  * @param \jorenvanhocht\Blogify\Models\Role $role
  */
 public function __construct(Guard $auth, Role $role)
 {
     $this->auth = $auth;
     $this->roles = $role->byAdminRoles()->get();
     $this->fillAllowedRolesArray();
 }