| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220 |
- <?php
- namespace backendApi\modules\v1\models;
- use common\components\ActiveRecord;
- use common\libs\logging\operate\valueType\Config as ValueTypeConfig;
- /**
- * This is the model class for table "{{%ADMIN}}".
- *
- * @property string $ID
- * @property string $ADMIN_NAME 用户名
- * @property string $REAL_NAME 会员姓名
- * @property string $REMARK 备注
- * @property string $ROLE_ID 角色ID
- * @property int $IS_ENABLE 是否启用
- * @property string $AUTH_KEY 认证KEY
- * @property string $PASSWORD_HASH 密码
- * @property string $PASSWORD_RESET_TOKEN 重设密码TOKEN
- * @property int $DONT_DEL 不可删除
- * @property int $IS_DEL 是否删除
- * @property int $LOGIN_NUMS 登录次数
- * @property int $FAIL_NUMS 登录失败次数
- * @property string $LAST_LOGIN_IP 上次登录IP
- * @property int $LAST_LOGIN_AT 上次登录时间
- * @property string $BIND_IP 绑定IP
- * @property string $CREATE_ADMIN 创建管理员
- * @property string $UPDATE_ADMIN 更新管理员
- * @property int $CREATED_AT 创建时间
- * @property int $UPDATED_AT 更新时间
- * @property int $DELETED_AT 删除时间
- * @property int $IS_MODIFY_PASSWORD 是否修改密码
- */
- class Admin extends ActiveRecord
- {
- /**
- * @inheritdoc
- */
- public static function tableName()
- {
- return '{{%ADMIN}}';
- }
- /**
- * {@inheritdoc}
- */
- public function rules()
- {
- return [
- [['ADMIN_NAME', 'REAL_NAME', 'ROLE_ID', 'PASSWORD_HASH', 'CREATE_ADMIN', 'CREATED_AT'], 'required'],
- [['IS_ENABLE', 'DONT_DEL', 'IS_DEL', 'LOGIN_NUMS', 'FAIL_NUMS', 'LAST_LOGIN_AT', 'CREATED_AT', 'UPDATED_AT', 'DELETED_AT', 'IS_MODIFY_PASSWORD'], 'integer'],
- [['ID', 'ROLE_ID', 'CREATE_ADMIN', 'UPDATE_ADMIN'], 'string', 'max' => 32],
- [['ADMIN_NAME', 'REMARK', 'AUTH_KEY', 'PASSWORD_HASH', 'PASSWORD_RESET_TOKEN'], 'string', 'max' => 255],
- [['REAL_NAME'], 'string', 'max' => 128],
- [['LAST_LOGIN_IP'], 'string', 'max' => 16],
- [['BIND_IP'], 'string', 'max' => 4000],
- [['ADMIN_NAME'], 'unique'],
- [['ID'], 'unique'],
- ];
- }
- /**
- * {@inheritdoc}
- */
- public function attributeLabels()
- {
- return [
- 'ID' => 'ID',
- 'ADMIN_NAME' => '用户名',
- 'REAL_NAME' => '会员姓名',
- 'REMARK' => '备注',
- 'ROLE_ID' => '角色ID',
- 'IS_ENABLE' => '是否启用',
- 'AUTH_KEY' => '认证KEY',
- 'PASSWORD_HASH' => '密码',
- 'PASSWORD_RESET_TOKEN' => '重设密码TOKEN',
- 'DONT_DEL' => '不可删除',
- 'IS_DEL' => '是否删除',
- 'LOGIN_NUMS' => '登录次数',
- 'FAIL_NUMS' => '登录失败次数',
- 'LAST_LOGIN_IP' => '上次登录IP',
- 'LAST_LOGIN_AT' => '上次登录时间',
- 'BIND_IP' => '绑定IP',
- 'CREATE_ADMIN' => '创建管理员',
- 'UPDATE_ADMIN' => '更新管理员',
- 'CREATED_AT' => '创建时间',
- 'UPDATED_AT' => '更新时间',
- 'DELETED_AT' => '删除时间',
- 'IS_MODIFY_PASSWORD' => '是否修改密码',
- ];
- }
- /**
- * Validates password
- *
- * @param string $password password to validate
- * @return bool if password provided is valid for current user
- */
- public function validatePassword($password) {
- return \Yii::$app->security->validatePassword($password, $this->PASSWORD_HASH);
- }
- /**
- * verificationPassword
- *
- * @param string $password password to validate
- * @return bool if password provided is valid for current user
- */
- public function verificationPassword($password,$scenario,$model)
- {
- // 判断密码长度不能少于8位
- if (strlen($password) < 8){
- return [ 'code' => 1000, 'type' => $scenario , 'message' => '登录密码不能小于8位' ];
- }
- // 判断密码中数字、大写字母、小写字母、特殊字符至少三种
- $symbol = '`~!@#$^&*()=|{}\'\":;\',\\[\\].<>\/?~!@#¥……&*()——|{}【】‘;:”。,、?';
- // $requiredRules = '/^(?![\d]+$)(?![a-z]+$)(?![A-Z]+$)(?!['.$symbol.']+$)[\da-zA-z'.$symbol.']{8,}$/'; // 这是两种的正则
- $requiredRules = '/^(?![\da-z]+$)(?![\dA-Z]+$)(?![\d'.$symbol.']+$)(?![a-zA-Z]+$)(?![a-z'.$symbol.']+$)(?![A-Z'.$symbol.']+$)[\da-zA-z'.$symbol.']{8,}$/';
- $requiredHandleResults = preg_match($requiredRules,$password);
- if (!$requiredHandleResults){
- return [ 'code' => 1000, 'type' => $scenario , 'message' => '登录密码中需要包含数字、大写字母、小写字母、特殊字符至少三种' ];
- }
- // 判断有三位以上重复性
- if(preg_match('/(\w)*(\w)\1{2}(\w)*/',$password)) {
- return [ 'code' => 1000, 'type' => $scenario , 'message' => '登录密码中数字、大写字母、小写字母不能连续重复三个以上' ];
- }
- // 判断密码中不能出现登录账号
- if (strpos($password, $model->ADMIN_NAME) !== false){
- return [ 'code' => 1000, 'type' => $scenario , 'message' => '登录密码中不允许出现管理员的登录账号信息' ];
- }
- return [ 'code' => 200, 'type' => $scenario , 'message' => '验证通过了' ];
- }
- /**
- * 根据用户名查找
- * @param $username
- * @return array|null|\yii\db\ActiveRecord
- */
- public static function findByUsername($username){
- $row = static::find()->selectNoText()->where('ADMIN_NAME=:ADMIN_NAME', [':ADMIN_NAME'=>trim($username)])->one();
- return $row;
- }
- /**
- * 获取ID
- * @param $adminName
- * @return string|null
- */
- public static function getIdByAdminName($adminName) {
- $data = self::findOneAsArray('ADMIN_NAME=:ADMIN_NAME', [':ADMIN_NAME' => $adminName], 'ID');
- return $data ? $data['ID'] : null;
- }
- /**
- * 获取管理员名通过ID
- * @param $id
- * @return string|null
- */
- public static function getAdminNameById($id){
- $data = self::findOneAsArray('ID=:ID', [':ID' => $id], 'ADMIN_NAME');
- return $data ? $data['ADMIN_NAME'] : null;
- }
- /**
- * 操作日志记录条件
- * @return array
- */
- public function attrLabelsWithLogType(){
- return [
- 'ADMIN_NAME' => '用户名',
- 'REAL_NAME' => '会员姓名',
- 'REMARK' => '备注',
- 'ROLE_ID' => [
- 'label' => '角色名称',
- 'type' => function($data){
- $value = isset($data['value']) ? $data['value'] : '';
- $result = AdminRole::findOneAsArray('ID=:ID', [':ID'=>$value], 'ROLE_NAME');
- return !empty($result) ? $result['ROLE_NAME'] : '';
- },
- ],
- 'IS_ENABLE' => [
- 'label' => '是否启用',
- 'type' => ValueTypeConfig::YES_NO_TYPE,
- ],
- 'BIND_IP' => '绑定IP',
- 'CREATE_ADMIN' => [
- 'label' => '创建人',
- 'type' => function($data){
- $value = isset($data['value']) ? $data['value'] : '';
- $result = Admin::findOneAsArray('ID=:ID', [':ID'=>$value], 'ADMIN_NAME');
- return !empty($result) ? $result['ADMIN_NAME'] : '';
- },
- ],
- 'UPDATE_ADMIN' => [
- 'label' => '更新人',
- 'type' => function($data){
- $value = isset($data['value']) ? $data['value'] : '';
- $result = Admin::findOneAsArray('ID=:ID', [':ID'=>$value], 'ADMIN_NAME');
- return !empty($result) ? $result['ADMIN_NAME'] : '';
- },
- ],
- 'CREATED_AT' => [
- 'label' => '创建时间',
- 'type' => ValueTypeConfig::DATE_TIME_TYPE,
- ],
- 'UPDATED_AT' => [
- 'label' => '更新时间',
- 'type' => ValueTypeConfig::DATE_TIME_TYPE,
- ],
- 'IS_MODIFY_PASSWORD' => [
- 'label' => '是否修改密码',
- 'type' => ValueTypeConfig::YES_NO_TYPE,
- ],
- ];
- }
- }
|