public function authenticate() { $user = User::model()->with('service')->find('username=:u', ['u' => $this->username]); $verifyPassword = false; if (empty($user)) { $state = 1; } else { $verifyPassword = CPasswordHelper::verifyPassword($this->password, $user->password); $state = $verifyPassword ? 0 : 1; } $result = Fraudmetrix::login($this->username, $state); if ($result['success'] == true && $result['final_decision'] == 'Reject') { $this->errorCode = self::ERROR_UNKNOWN_IDENTITY; $this->errorMessage = '未知错误'; } else { if (empty($user)) { $this->errorCode = self::ERROR_USERNAME_INVALID; $this->errorMessage = '用户邮箱不存在'; } else { if ($user->state == 1) { $this->errorCode = self::ERROR_NOT_LOGIN; $this->errorMessage = '登录账号已被锁定'; } elseif (!$verifyPassword) { $this->errorCode = self::ERROR_PASSWORD_INVALID; $this->errorMessage = '用户密码错误'; } else { $server = Setting::model()->get('wakfu', 'server'); $this->errorCode = self::ERROR_NONE; $this->setPersistentStates(array_merge($user->getAttributes(), ['last_login_time' => $user->last_login_time, 'last_login_ip' => $user->last_login_ip, 'sign_up_time' => $user->sign_up_time, 'sign_up_ip' => $user->sign_up_ip, 'server' => $server[$user->service->server], 'port' => $user->service->port])); $this->afterLogin($user); } } } return !$this->errorCode; }
public function authenticate() { $admin = User::model()->with('userRoles', 'userGroups')->find('`t`.`username`=:u', ['u' => $this->username]); $verifyPassword = false; if (empty($admin) || $admin->state != 2) { $state = 1; } else { $verifyPassword = CPasswordHelper::verifyPassword($this->password, $admin->password); $state = $verifyPassword ? 0 : 1; } $result = Fraudmetrix::login($this->username, $state); if ($result['success'] == true && $result['final_decision'] == 'Reject') { $this->errorCode = self::ERROR_UNKNOWN_IDENTITY; $this->errorMessage = '未知错误'; } else { if (empty($admin) || $admin->state != 2) { // 普通用户不允许登录管理系统 $this->errorCode = self::ERROR_USERNAME_INVALID; $this->errorMessage = '用户名不存在'; } else { if (!$verifyPassword) { $this->errorCode = self::ERROR_PASSWORD_INVALID; $this->errorMessage = '用户密码错误'; } else { $this->errorCode = self::ERROR_NONE; $role = []; foreach ($admin->getRelated('userRoles') as $item) { $r = $item->getRelated('role'); if ($r) { $role[] = $r->name; } } $group = []; foreach ($admin->getRelated('userGroups') as $item) { $g = $item->getRelated('group'); if ($g) { $group[] = $g->name; } } $this->setPersistentStates(array_merge($admin->getAttributes(), array('last_login_time' => $admin->last_login_time, 'last_login_ip' => $admin->last_login_ip, 'sign_up_time' => $admin->sign_up_time, 'sign_up_ip' => $admin->sign_up_ip, 'role' => $role, 'group' => $group))); $this->afterLogin($admin); } } } return !$this->errorCode; }
public function save() { $app = Yii::app(); $transaction = $app->db->beginTransaction(); try { if ($this->validate() == false) { throw new CDbException('参数出错', 0, []); } preg_match('/^(.*)@/', $this->username, $match); $password = CPasswordHelper::hashPassword($this->password); $result = Fraudmetrix::register($this->username, $this->username, $password); if ($result['success'] == true && $result['final_decision'] == 'Reject') { throw new CDbException('注册用户失败', 100, []); } $user = new User(); $user->attributes = ['username' => $this->username, 'realname' => isset($match[1]) ? $match[1] : '无', 'nickname' => isset($match[1]) ? $match[1] : '无', 'email' => $this->username, 'password' => $password, 'sign_up_time' => time(), 'sign_up_ip' => Yii::app()->request->getUserHostAddress(), 'approved' => 5, 'state' => 0]; if ($user->save() === false) { throw new CDbException('注册用户失败', 10, $user->getErrors()); } $user->uuid = $app->getSecurityManager()->generateUUID($user->id . $user->password); if ($user->save() === false) { throw new CDbException('注册用户失败', 10, $user->getErrors()); } //写入service $service = new Service(); $service->attributes = ['uid' => $user->id, 'email' => $user->username, 'status' => 1, 'traffic' => 100 * 100]; if ($service->save()) { Queue::apiCreate($user->id); } $transaction->commit(); } catch (CDbException $e) { $transaction->rollback(); $this->addErrors($e->errorInfo); return false; } $email = $app->getComponent('email'); if (!empty($email)) { $email->quickSend($this->username, '欢迎您注册夸父', "请妥善保管好您的登录密码:" . $this->password); } return true; }