Inheritance: extends app\repositories\Repository
 /**
  * @param array $data
  * @param bool $provider
  * @return static
  */
 public function create(array $data, $provider = false)
 {
     $user = self::MODEL;
     $user = new $user();
     $user->name = $data['name'];
     $user->email = $data['email'];
     $user->confirmation_code = md5(uniqid(mt_rand(), true));
     $user->status = 1;
     $user->password = $provider ? null : bcrypt($data['password']);
     $user->confirmed = $provider ? 1 : (config('access.users.confirm_email') ? 0 : 1);
     DB::transaction(function () use($user) {
         if (parent::save($user)) {
             /**
              * Add the default site role to the new user
              */
             $user->attachRole($this->role->getDefaultUserRole());
         }
     });
     /**
      * If users have to confirm their email and this is not a social account,
      * send the confirmation email
      *
      * If this is a social account they are confirmed through the social provider by default
      */
     if (config('access.users.confirm_email') && $provider === false) {
         $user->notify(new UserNeedsConfirmation($user->confirmation_code));
     }
     /**
      * Return the user object
      */
     return $user;
 }
 /**
  * @param ManageRoleRequest $request
  * @return mixed
  */
 public function __invoke(ManageRoleRequest $request)
 {
     return Datatables::of($this->roles->getForDataTable())->addColumn('permissions', function ($role) {
         if ($role->all) {
             return '<span class="label label-success">' . trans('labels.general.all') . '</span>';
         }
         return $role->permissions->count() ? implode("<br/>", $role->permissions->pluck('display_name')->toArray()) : '<span class="label label-danger">' . trans('labels.general.none') . '</span>';
     })->addColumn('users', function ($role) {
         return $role->users->count();
     })->addColumn('actions', function ($role) {
         return $role->action_buttons;
     })->make(true);
 }
 /**
  * @param  Role $role
  * @param  ManageRoleRequest $request
  * @return mixed
  */
 public function destroy(Role $role, ManageRoleRequest $request)
 {
     $this->roles->delete($role);
     return redirect()->route('admin.access.role.index')->withFlashSuccess(trans('alerts.backend.roles.deleted'));
 }
 /**
  * @param User $user
  * @param ManageUserRequest $request
  * @return mixed
  */
 public function edit(User $user, ManageUserRequest $request)
 {
     return view('backend.access.edit')->withUser($user)->withUserRoles($user->roles->pluck('id')->all())->withRoles($this->roles->getAll());
 }