toArray(); $data['name'] = $user->name; $data['avatar'] = self::getAvatar($id); $data['last_login'] = $user->previousLoginAt(); // $data['roles'] = self::getRoles(); // $data['permissions'] = self::getPermissions(); $data['roles'] = $user->roles->pluck('id')->toArray(); $data['permissions'] = $user->allPermissions()->pluck('id')->toArray(); return $data; } public static function store($data) { $id = isset($data['id']) ? $data['id'] : false; if (!empty($data['password'])) { $data['password'] = Hash::make($data['password']); } else { if ($id) { unset($data['password']); } else { $data['password'] = Hash::make(Str::random(8)); } } $data['remember_token'] = Str::random(32); $data['active'] = true; $user = $id ? self::update($data, $id) : self::create($data); if (isset($data['roles'])) { $user->roles()->sync(array_keys($data['roles'])); } // $user->sendNewUserNotification($data['remember_token'], Auth::user()); return $user; } public static function create($data) { $data['password'] = $data['password'] ? Hash::make($data['password']) : Hash::make(Str::random(8)); return User::create($data); } public static function update($data, $id = false) { $id = $id ? $id : $data['id']; $user = self::get($id); $ret = $user->update($data); return $user; } public static function get($id = false) { $id = $id ? $id : self::getId(); return User::findOrFail($id); } public static function getId() { $user = self::getUser(); return $user ? $user->id : false; } public static function getName() { $user = self::getUser(); return $user->first_name . ' ' . $user->last_name; } public static function getUser() { return Auth::user(); } public static function isConnected() { return Auth::check(); } public static function getOptions() { return User::orderBy('name', 'asc')->get()->pluck('name', 'id')->toArray(); } public static function delete($id) { $ret = RoleUser::byUser($id)->delete(); return User::destroy($id); } public static function getListByRole($role) { return self::selectOptions()->orderBy('name', 'asc')->whereRoleIs($role)->get(); } public static function hasRole($role, $user = false) { $user = $user ? $user : self::getUser(); return $user ? $user->hasRole($role) : false; } public static function hasPermission($permission, $user = false) { if (self::isAdmin()) { return true; } $user = $user ? $user : self::getUser(); $permissions = self::getPermissions($user); return $user ? self::checkPermission($permissions, $permission) : false; // TODO why is posing problem ??? // return $user ? $user->hasPermission($permission) : false; } public static function checkPermission($permissions, $permission) { if (!strpos($permission, '*')) { return in_array($permission, $permissions); } $permission = str_replace('*', '', $permission); foreach ($permissions as $item) { if (stripos($item, $permission) !== false) { return true; } } return false; } public static function getRoles($user = false) { $user = $user ? $user : self::getUser(); return $user ? $user->roles->pluck('name')->toArray() : false; } public static function getRolesToEdit() { return Roles::getListByRights(); } public static function getPermissions($user = false) { $user = $user ? $user : self::getUser(); return $user ? $user->allPermissions()->pluck('name')->toArray() : false; } public static function getByTeam($id) { return User::byTeam($id)->get(); } public static function getByUniqueTeam($id) { return User::byTeam($id)->byUniqueTeam()->get(); } public static function destroyByUniqueTeam($id) { return User::byTeam($id)->byUniqueTeam()->delete(); } public static function getAvatar($user_id) { $avatar = self::get($user_id)->avatar; if (!$avatar) { return '/assets/img/no-avatar.png'; } $path = Clients::isClient() ? Clients::getPublicPath('/images/avatars/') : Partners::getPublicPath('/images/avatars/'); return $path . $avatar; } public static function selectOptions() { return User::select('id', DB::raw("concat(last_name,' ',first_name) as name")); } public static function count() { return User::count(); } // récupère tous les utilisateurs pour un statut donné public static function select_all_by_status_id($status_id) { return User::byStatus($status_id); } // récupère toutes les informations d'un utilisateur pour un id donné public static function select_by_id($user_id) { return User::with('status')->find($user_id)->toArray(); } // récupère toutes les informations d'un utilisateur pour un nom donné public static function select_by_name($name) { return User::byName($name)->first()->toArray(); } // récupère les utilisateurs actifs d'un statut, d'une équipe et d'une entité donnés public static function select_by_status_and_team_and_entity($status_id, $team_id, $third_party_id) { return User::active()->byStatus($status_id)->byTeam($team_id)->byThirdParty($third_party_id)->get()->toArray(); } // récupère toutes les informations nécessaires d'un utilisateur pour un id donné public static function select_datas_by_id($user_id) { return User::with('status')->find($user_id)->toArray(); } // met à jour le statut actif/inactif d'un utilisateur public static function toggle_active($id, $active) { return self::get($id)->update(['active' => $active]); } public static function uploadAvatar($request) { $targetDir = 'uploads'; $file = $request->file('avatar_file'); $data = \App\Repositories\Core\Upload::getData($file); $file_uploaded = \App\Repositories\Core\Upload::store($file, $targetDir); $tab = pathinfo($file_uploaded); $response['name'] = $tab['basename']; return $response; } // met à jour l'avatar d'un utilisateur public static function update_avatar($id, $avatar) { return User::find($id)->update(['avatar' => $avatar]); } // met à jour le mot de passe d'un utilisateur public static function update_password($id, $password) { $password = Hash::make($password); UserClients::changePasswordsByUser($id, $password); $connection = app(Connection::class); return User::on($connection->systemName())->find($id)->update(['password' => $password]); } }