You cannot select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

78 lines
2.1 KiB
Lua

local pairs = pairs
local ipairs = ipairs
local smatch = string.match
local slen = string.len
local ssub = string.sub
local slower = string.lower
local utils = require("app.libs.utils")
local pwd_secret = require("app.config.config").pwd_secret
local user_model = require("app.model.user")
local role_lv = 1 --角色等级 用来 鉴权操作
return function(username, password)
local pattern = "^[a-zA-Z][0-9a-zA-Z_]+$"
local match, err = smatch(username, pattern)
if not username or not password or username == "" or password == "" then
return {
code = system_error_msg(AUTH_ERROR.account_nil),
message = system_error_msg(AUTH_ERROR.account_nil),
}
end
local username_len = slen(username)
local password_len = slen(password)
if username_len<4 or username_len>50 then
return {
success = false,
msg = "用户名长度应为4~50位."
}
end
if password_len<6 or password_len>50 then
return {
success = false,
msg = "密码长度应为6~50位."
}
end
if not match then
return {
success = false,
msg = "用户名只能输入字母、下划线、数字,必须以字母开头."
}
end
local result, err = user_model:query_by_username(username)
local isExist = false
if result and not err then
isExist = true
end
if isExist == true then
return {
success = false,
msg = "用户名已被占用,请修改."
}
else
password = utils.encode(password .. "#" .. pwd_secret)
local avatar = ssub(username, 1, 1) .. ".png" --取首字母作为默认头像名
avatar = slower(avatar)
local result, err = user_model:new(username, password, avatar, role_lv)
if result and not err then
return {
success = true,
msg = "注册成功."
}
else
return {
success = false,
msg = "注册失败."
}
end
end
end