$user->getId(), self::KEY_SALT => $user->getSalt(), self::KEY_DATA => $data )); } /** * @param $user_id * @return LuticateUsersDbo|null */ public static function checkUserId($user_id) { $user = LuticateUsersDataAccess::getById($user_id); if (is_null($user)) { self::notFound("User not found"); } return $user; } public static function login($username, $password) { $user = LuticateUsersDataAccess::getByUsernameOrEmail($username); if (is_null($user)) self::badPassword(); if (!self::verifyPassword($password, $user->getPassword())) self::badPassword(); $user = LuticateUsersLoginDbo::fromUserDbo($user); $user->setToken(self::getToken($user)); return $user; } /** * @param $user LuticateUsersDbo * @return bool */ public static function logout($user) { if ($user->getId() != 0) { $user->setSalt(self::getSalt()); LuticateUsersDataAccess::editById($user->getId(), $user); } return true; } public static function getAll($page = 0, $perPage = PHP_INT_MAX) { $users = self::search($page, $perPage, "username", "ASC"); $usersLight = array(); foreach ($users as $user) { $usersLight[] = LuticateUsersLightDbo::fromUserDbo($user); } return $usersLight; } public static function add($username, $email, $password) { $hash = self::hashPassword($password); if (filter_var($username, FILTER_VALIDATE_EMAIL)) self::badInput("Username can not be an email"); if (!filter_var($email, FILTER_VALIDATE_EMAIL)) self::badInput("Invalid email address"); $user = LuticateUsersDataAccess::getByUsernameOrEmail($username); if (!is_null($user)) self::badInput("Username already exists"); $user = LuticateUsersDataAccess::getByUsernameOrEmail($email); if (!is_null($user)) self::badInput("Email already used"); $user = new LuticateUsersDbo(); $user->setEmail($email); $user->setPassword($hash); $user->setUsername($username); $user->setSalt(self::getSalt()); DB::beginTransaction(); $user_id = LuticateUsersDataAccess::addId($user); if (!is_null(LuticateGroupsBusiness::getById(0))) { LuticateGroupsBusiness::addUser($user_id, 0); } DB::commit(); return $user_id; } public static function edit($user_id, $email) { if ($user_id != 0) { $user = self::checkUserId($user_id); $user->setEmail($email); LuticateUsersDataAccess::editById($user_id, $user); } return true; } public static function editMe($email, $user) { return self::edit($user->getId(), $email); } public static function setPassword($user_id, $password) { if ($user_id != 0) { $user = self::checkUserId($user_id); $user->setPassword(self::hashPassword($password)); $user->setSalt(self::getSalt()); LuticateUsersDataAccess::editById($user_id, $user); } return true; } public static function setPasswordMe($password, $oldPassword, $user) { self::login($user->getUsername(), $oldPassword); return self::setPassword($user->getId(), $password); } public static function del($user_id) { parent::deleteById($user_id); } }