<?php
declare (strict_types = 1);

namespace app\validate;

use think\Validate;

/**
 * 用户验证器
 */
class UserValidate extends Validate
{
    // 定义验证规则
    protected $rule = [
        'user_name' => 'require|regex:/^[A-Za-z][A-Za-z0-9]{2,19}$/',
        'nick_name' => 'require|chsDash|length:2,20',
        'password' => 'require|regex:/^[A-Za-z0-9_+@%$]{6,20}$/',
        'phone' => 'mobile',
        'user_role' => 'integer|gt:0',
        'merchant_id' => 'require|integer|gt:0',
        'white_list_ip' => 'max:500',
    ];

    // 定义错误消息
    protected $message = [
        'user_name.require'  => '账号名不能为空',
        'user_name.regex'    => '账号名只能包含字母或数字，以字母开头，长度在3到20个字符之间',
        'nick_name.require'   => '昵称不能为空',
        'nick_name.chsDash'   => '昵称只能包含汉字、字母、数字和下划线_及破折号-',
        'nick_name.length'   => '昵称长度必须在2-20个字符之间',
        'password.require'   => '密码不能为空',
        'password.regex'    => '密码只能包含字母、数字及特殊字符(_+@%), 长度在6-20个字符之间',
        'phone.mobile'       => '手机号格式不正确',
        'user_role.integer'  => '角色ID必须是整数',
        'user_role.gt'       => '角色ID必须大于0',
        'merchant_id.require' => '商户ID不能为空',
        'merchant_id.integer' => '商户ID必须是整数',
        'merchant_id.gt'     => '商户ID必须大于0',
        'white_list_ip.max'  => 'IP白名单长度不能超过500个字符',
    ];
    
    // 定义验证场景
    protected $scene = [
        'login'  => ['user_name', 'password'],
        'create' => ['user_name', 'password', 'nick_name', 'user_role', 'merchant_id'],
    ];
}