Skip to content
项目
群组
代码片段
帮助
当前项目
正在载入...
登录 / 注册
切换导航面板
C
cocktail-party-server
项目
项目
详情
活动
周期分析
仓库
仓库
文件
提交
分支
标签
贡献者
图表
比较
统计图
议题
0
议题
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
CI / CD
CI / CD
流水线
作业
日程
统计图
Wiki
Wiki
代码片段
代码片段
成员
成员
折叠边栏
关闭边栏
活动
图像
聊天
创建新问题
作业
提交
问题看板
Open sidebar
cocktail-party
cocktail-party-server
Commits
5397e345
提交
5397e345
authored
7月 30, 2021
作者:
RuoYi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
新增是否开启用户注册功能
上级
8ed7916b
隐藏空白字符变更
内嵌
并排
正在显示
16 个修改的文件
包含
451 行增加
和
16 行删除
+451
-16
SysRegisterController.java
...om/ruoyi/web/controller/system/SysRegisterController.java
+38
-0
messages.properties
ruoyi-admin/src/main/resources/i18n/messages.properties
+1
-0
Constants.java
...on/src/main/java/com/ruoyi/common/constant/Constants.java
+8
-1
UserConstants.java
...rc/main/java/com/ruoyi/common/constant/UserConstants.java
+13
-1
RegisterBody.java
...java/com/ruoyi/common/core/domain/model/RegisterBody.java
+11
-0
SecurityConfig.java
.../main/java/com/ruoyi/framework/config/SecurityConfig.java
+3
-4
AsyncFactory.java
...ava/com/ruoyi/framework/manager/factory/AsyncFactory.java
+1
-1
SysRegisterService.java
...a/com/ruoyi/framework/web/service/SysRegisterService.java
+115
-0
ISysUserService.java
...c/main/java/com/ruoyi/system/service/ISysUserService.java
+9
-1
SysUserServiceImpl.java
...ava/com/ruoyi/system/service/impl/SysUserServiceImpl.java
+11
-0
login.js
ruoyi-ui/src/api/login.js
+12
-0
index.js
ruoyi-ui/src/router/index.js
+5
-0
login.vue
ruoyi-ui/src/views/login.vue
+9
-3
register.vue
ruoyi-ui/src/views/register.vue
+208
-0
index.vue
ruoyi-ui/src/views/system/user/index.vue
+2
-1
ry_20210731.sql
sql/ry_20210731.sql
+5
-4
没有找到文件。
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysRegisterController.java
0 → 100644
浏览文件 @
5397e345
package
com
.
ruoyi
.
web
.
controller
.
system
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.util.StringUtils
;
import
org.springframework.web.bind.annotation.PostMapping
;
import
org.springframework.web.bind.annotation.RequestBody
;
import
org.springframework.web.bind.annotation.RestController
;
import
com.ruoyi.common.core.controller.BaseController
;
import
com.ruoyi.common.core.domain.AjaxResult
;
import
com.ruoyi.common.core.domain.model.RegisterBody
;
import
com.ruoyi.framework.web.service.SysRegisterService
;
import
com.ruoyi.system.service.ISysConfigService
;
/**
* 注册验证
*
* @author ruoyi
*/
@RestController
public
class
SysRegisterController
extends
BaseController
{
@Autowired
private
SysRegisterService
registerService
;
@Autowired
private
ISysConfigService
configService
;
@PostMapping
(
"/register"
)
public
AjaxResult
register
(
@RequestBody
RegisterBody
user
)
{
if
(!(
"true"
.
equals
(
configService
.
selectConfigByKey
(
"sys.account.registerUser"
))))
{
return
error
(
"当前系统没有开启注册功能!"
);
}
String
msg
=
registerService
.
register
(
user
);
return
StringUtils
.
isEmpty
(
msg
)
?
success
()
:
error
(
msg
);
}
}
ruoyi-admin/src/main/resources/i18n/messages.properties
浏览文件 @
5397e345
...
@@ -19,6 +19,7 @@ user.password.not.valid=* 5-50个字符
...
@@ -19,6 +19,7 @@ user.password.not.valid=* 5-50个字符
user.email.not.valid
=
邮箱格式错误
user.email.not.valid
=
邮箱格式错误
user.mobile.phone.number.not.valid
=
手机号格式错误
user.mobile.phone.number.not.valid
=
手机号格式错误
user.login.success
=
登录成功
user.login.success
=
登录成功
user.register.success
=
注册成功
user.notfound
=
请重新登录
user.notfound
=
请重新登录
user.forcelogout
=
管理员强制退出,请重新登录
user.forcelogout
=
管理员强制退出,请重新登录
user.unknown.error
=
未知错误,请重新登录
user.unknown.error
=
未知错误,请重新登录
...
...
ruoyi-common/src/main/java/com/ruoyi/common/constant/Constants.java
浏览文件 @
5397e345
package
com
.
ruoyi
.
common
.
constant
;
package
com
.
ruoyi
.
common
.
constant
;
import
io.jsonwebtoken.Claims
;
/**
/**
* 通用常量信息
* 通用常量信息
*
*
...
@@ -47,6 +49,11 @@ public class Constants
...
@@ -47,6 +49,11 @@ public class Constants
*/
*/
public
static
final
String
LOGOUT
=
"Logout"
;
public
static
final
String
LOGOUT
=
"Logout"
;
/**
* 注册
*/
public
static
final
String
REGISTER
=
"Register"
;
/**
/**
* 登录失败
* 登录失败
*/
*/
...
@@ -95,7 +102,7 @@ public class Constants
...
@@ -95,7 +102,7 @@ public class Constants
/**
/**
* 用户名称
* 用户名称
*/
*/
public
static
final
String
JWT_USERNAME
=
"sub"
;
public
static
final
String
JWT_USERNAME
=
Claims
.
SUBJECT
;
/**
/**
* 用户头像
* 用户头像
...
...
ruoyi-common/src/main/java/com/ruoyi/common/constant/UserConstants.java
浏览文件 @
5397e345
...
@@ -53,7 +53,7 @@ public class UserConstants
...
@@ -53,7 +53,7 @@ public class UserConstants
/** Layout组件标识 */
/** Layout组件标识 */
public
final
static
String
LAYOUT
=
"Layout"
;
public
final
static
String
LAYOUT
=
"Layout"
;
/** ParentView组件标识 */
/** ParentView组件标识 */
public
final
static
String
PARENT_VIEW
=
"ParentView"
;
public
final
static
String
PARENT_VIEW
=
"ParentView"
;
...
@@ -63,4 +63,16 @@ public class UserConstants
...
@@ -63,4 +63,16 @@ public class UserConstants
/** 校验返回结果码 */
/** 校验返回结果码 */
public
final
static
String
UNIQUE
=
"0"
;
public
final
static
String
UNIQUE
=
"0"
;
public
final
static
String
NOT_UNIQUE
=
"1"
;
public
final
static
String
NOT_UNIQUE
=
"1"
;
/**
* 用户名长度限制
*/
public
static
final
int
USERNAME_MIN_LENGTH
=
2
;
public
static
final
int
USERNAME_MAX_LENGTH
=
20
;
/**
* 密码长度限制
*/
public
static
final
int
PASSWORD_MIN_LENGTH
=
5
;
public
static
final
int
PASSWORD_MAX_LENGTH
=
20
;
}
}
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/model/RegisterBody.java
0 → 100644
浏览文件 @
5397e345
package
com
.
ruoyi
.
common
.
core
.
domain
.
model
;
/**
* 用户注册对象
*
* @author ruoyi
*/
public
class
RegisterBody
extends
LoginBody
{
}
ruoyi-framework/src/main/java/com/ruoyi/framework/config/SecurityConfig.java
浏览文件 @
5397e345
...
@@ -49,7 +49,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
...
@@ -49,7 +49,7 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
*/
*/
@Autowired
@Autowired
private
JwtAuthenticationTokenFilter
authenticationTokenFilter
;
private
JwtAuthenticationTokenFilter
authenticationTokenFilter
;
/**
/**
* 跨域过滤器
* 跨域过滤器
*/
*/
...
@@ -96,8 +96,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
...
@@ -96,8 +96,8 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
.
sessionManagement
().
sessionCreationPolicy
(
SessionCreationPolicy
.
STATELESS
).
and
()
.
sessionManagement
().
sessionCreationPolicy
(
SessionCreationPolicy
.
STATELESS
).
and
()
// 过滤请求
// 过滤请求
.
authorizeRequests
()
.
authorizeRequests
()
// 对于登录login 验证码captchaImage 允许匿名访问
// 对于登录login
注册register
验证码captchaImage 允许匿名访问
.
antMatchers
(
"/login"
,
"/captchaImage"
).
anonymous
()
.
antMatchers
(
"/login"
,
"/
register"
,
"/
captchaImage"
).
anonymous
()
.
antMatchers
(
.
antMatchers
(
HttpMethod
.
GET
,
HttpMethod
.
GET
,
"/"
,
"/"
,
...
@@ -126,7 +126,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
...
@@ -126,7 +126,6 @@ public class SecurityConfig extends WebSecurityConfigurerAdapter
httpSecurity
.
addFilterBefore
(
corsFilter
,
LogoutFilter
.
class
);
httpSecurity
.
addFilterBefore
(
corsFilter
,
LogoutFilter
.
class
);
}
}
/**
/**
* 强散列哈希加密实现
* 强散列哈希加密实现
*/
*/
...
...
ruoyi-framework/src/main/java/com/ruoyi/framework/manager/factory/AsyncFactory.java
浏览文件 @
5397e345
...
@@ -65,7 +65,7 @@ public class AsyncFactory
...
@@ -65,7 +65,7 @@ public class AsyncFactory
logininfor
.
setOs
(
os
);
logininfor
.
setOs
(
os
);
logininfor
.
setMsg
(
message
);
logininfor
.
setMsg
(
message
);
// 日志状态
// 日志状态
if
(
Constants
.
LOGIN_SUCCESS
.
equals
(
status
)
||
Constants
.
LOGOUT
.
equals
(
status
))
if
(
StringUtils
.
equalsAny
(
status
,
Constants
.
LOGIN_SUCCESS
,
Constants
.
LOGOUT
,
Constants
.
REGISTER
))
{
{
logininfor
.
setStatus
(
Constants
.
SUCCESS
);
logininfor
.
setStatus
(
Constants
.
SUCCESS
);
}
}
...
...
ruoyi-framework/src/main/java/com/ruoyi/framework/web/service/SysRegisterService.java
0 → 100644
浏览文件 @
5397e345
package
com
.
ruoyi
.
framework
.
web
.
service
;
import
org.springframework.beans.factory.annotation.Autowired
;
import
org.springframework.stereotype.Component
;
import
org.springframework.util.StringUtils
;
import
com.ruoyi.common.constant.Constants
;
import
com.ruoyi.common.constant.UserConstants
;
import
com.ruoyi.common.core.domain.entity.SysUser
;
import
com.ruoyi.common.core.domain.model.RegisterBody
;
import
com.ruoyi.common.core.redis.RedisCache
;
import
com.ruoyi.common.exception.user.CaptchaException
;
import
com.ruoyi.common.exception.user.CaptchaExpireException
;
import
com.ruoyi.common.utils.MessageUtils
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.framework.manager.AsyncManager
;
import
com.ruoyi.framework.manager.factory.AsyncFactory
;
import
com.ruoyi.system.service.ISysConfigService
;
import
com.ruoyi.system.service.ISysUserService
;
/**
* 注册校验方法
*
* @author ruoyi
*/
@Component
public
class
SysRegisterService
{
@Autowired
private
ISysUserService
userService
;
@Autowired
private
ISysConfigService
configService
;
@Autowired
private
RedisCache
redisCache
;
/**
* 注册
*/
public
String
register
(
RegisterBody
registerBody
)
{
String
msg
=
""
,
username
=
registerBody
.
getUsername
(),
password
=
registerBody
.
getPassword
();
boolean
captchaOnOff
=
configService
.
selectCaptchaOnOff
();
// 验证码开关
if
(
captchaOnOff
)
{
validateCaptcha
(
username
,
registerBody
.
getCode
(),
registerBody
.
getUuid
());
}
if
(
StringUtils
.
isEmpty
(
username
))
{
msg
=
"用户名不能为空"
;
}
else
if
(
StringUtils
.
isEmpty
(
password
))
{
msg
=
"用户密码不能为空"
;
}
else
if
(
username
.
length
()
<
UserConstants
.
USERNAME_MIN_LENGTH
||
username
.
length
()
>
UserConstants
.
USERNAME_MAX_LENGTH
)
{
msg
=
"账户长度必须在2到20个字符之间"
;
}
else
if
(
password
.
length
()
<
UserConstants
.
PASSWORD_MIN_LENGTH
||
password
.
length
()
>
UserConstants
.
PASSWORD_MAX_LENGTH
)
{
msg
=
"密码长度必须在5到20个字符之间"
;
}
else
if
(
UserConstants
.
NOT_UNIQUE
.
equals
(
userService
.
checkUserNameUnique
(
username
)))
{
msg
=
"保存用户'"
+
username
+
"'失败,注册账号已存在"
;
}
else
{
SysUser
sysUser
=
new
SysUser
();
sysUser
.
setUserName
(
username
);
sysUser
.
setNickName
(
username
);
sysUser
.
setPassword
(
SecurityUtils
.
encryptPassword
(
registerBody
.
getPassword
()));
boolean
regFlag
=
userService
.
registerUser
(
sysUser
);
if
(!
regFlag
)
{
msg
=
"注册失败,请联系系统管理人员"
;
}
else
{
AsyncManager
.
me
().
execute
(
AsyncFactory
.
recordLogininfor
(
username
,
Constants
.
REGISTER
,
MessageUtils
.
message
(
"user.register.success"
)));
}
}
return
msg
;
}
/**
* 校验验证码
*
* @param username 用户名
* @param code 验证码
* @param uuid 唯一标识
* @return 结果
*/
public
void
validateCaptcha
(
String
username
,
String
code
,
String
uuid
)
{
String
verifyKey
=
Constants
.
CAPTCHA_CODE_KEY
+
uuid
;
String
captcha
=
redisCache
.
getCacheObject
(
verifyKey
);
redisCache
.
deleteObject
(
verifyKey
);
if
(
captcha
==
null
)
{
throw
new
CaptchaExpireException
();
}
if
(!
code
.
equalsIgnoreCase
(
captcha
))
{
throw
new
CaptchaException
();
}
}
}
ruoyi-system/src/main/java/com/ruoyi/system/service/ISysUserService.java
浏览文件 @
5397e345
...
@@ -105,6 +105,14 @@ public interface ISysUserService
...
@@ -105,6 +105,14 @@ public interface ISysUserService
*/
*/
public
int
insertUser
(
SysUser
user
);
public
int
insertUser
(
SysUser
user
);
/**
* 注册用户信息
*
* @param user 用户信息
* @return 结果
*/
public
boolean
registerUser
(
SysUser
user
);
/**
/**
* 修改用户信息
* 修改用户信息
*
*
...
@@ -112,7 +120,7 @@ public interface ISysUserService
...
@@ -112,7 +120,7 @@ public interface ISysUserService
* @return 结果
* @return 结果
*/
*/
public
int
updateUser
(
SysUser
user
);
public
int
updateUser
(
SysUser
user
);
/**
/**
* 用户授权角色
* 用户授权角色
*
*
...
...
ruoyi-system/src/main/java/com/ruoyi/system/service/impl/SysUserServiceImpl.java
浏览文件 @
5397e345
...
@@ -246,6 +246,17 @@ public class SysUserServiceImpl implements ISysUserService
...
@@ -246,6 +246,17 @@ public class SysUserServiceImpl implements ISysUserService
return
rows
;
return
rows
;
}
}
/**
* 注册用户信息
*
* @param user 用户信息
* @return 结果
*/
public
boolean
registerUser
(
SysUser
user
)
{
return
userMapper
.
insertUser
(
user
)
>
0
;
}
/**
/**
* 修改保存用户信息
* 修改保存用户信息
*
*
...
...
ruoyi-ui/src/api/login.js
浏览文件 @
5397e345
...
@@ -15,6 +15,18 @@ export function login(username, password, code, uuid) {
...
@@ -15,6 +15,18 @@ export function login(username, password, code, uuid) {
})
})
}
}
// 注册方法
export
function
register
(
data
)
{
return
request
({
url
:
'/register'
,
headers
:
{
isToken
:
false
},
method
:
'post'
,
data
:
data
})
}
// 获取用户详细信息
// 获取用户详细信息
export
function
getInfo
()
{
export
function
getInfo
()
{
return
request
({
return
request
({
...
...
ruoyi-ui/src/router/index.js
浏览文件 @
5397e345
...
@@ -43,6 +43,11 @@ export const constantRoutes = [
...
@@ -43,6 +43,11 @@ export const constantRoutes = [
component
:
(
resolve
)
=>
require
([
'@/views/login'
],
resolve
),
component
:
(
resolve
)
=>
require
([
'@/views/login'
],
resolve
),
hidden
:
true
hidden
:
true
},
},
{
path
:
'/register'
,
component
:
(
resolve
)
=>
require
([
'@/views/register'
],
resolve
),
hidden
:
true
},
{
{
path
:
'/404'
,
path
:
'/404'
,
component
:
(
resolve
)
=>
require
([
'@/views/error/404'
],
resolve
),
component
:
(
resolve
)
=>
require
([
'@/views/error/404'
],
resolve
),
...
...
ruoyi-ui/src/views/login.vue
浏览文件 @
5397e345
...
@@ -44,6 +44,9 @@
...
@@ -44,6 +44,9 @@
<span
v-if=
"!loading"
>
登 录
</span>
<span
v-if=
"!loading"
>
登 录
</span>
<span
v-else
>
登 录 中...
</span>
<span
v-else
>
登 录 中...
</span>
</el-button>
</el-button>
<div
style=
"float: right;"
v-if=
"register"
>
<router-link
class=
"link-type"
:to=
"'/register'"
>
立即注册
</router-link>
</div>
</el-form-item>
</el-form-item>
</el-form>
</el-form>
<!-- 底部 -->
<!-- 底部 -->
...
@@ -73,15 +76,18 @@ export default {
...
@@ -73,15 +76,18 @@ export default {
},
},
loginRules
:
{
loginRules
:
{
username
:
[
username
:
[
{
required
:
true
,
trigger
:
"blur"
,
message
:
"
用户名不能为空
"
}
{
required
:
true
,
trigger
:
"blur"
,
message
:
"
请输入您的账号
"
}
],
],
password
:
[
password
:
[
{
required
:
true
,
trigger
:
"blur"
,
message
:
"
密码不能为空
"
}
{
required
:
true
,
trigger
:
"blur"
,
message
:
"
请输入您的密码
"
}
],
],
code
:
[{
required
:
true
,
trigger
:
"change"
,
message
:
"
验证码不能为空
"
}]
code
:
[{
required
:
true
,
trigger
:
"change"
,
message
:
"
请输入验证码
"
}]
},
},
loading
:
false
,
loading
:
false
,
// 验证码开关
captchaOnOff
:
true
,
captchaOnOff
:
true
,
// 注册开关
register
:
false
,
redirect
:
undefined
redirect
:
undefined
};
};
},
},
...
...
ruoyi-ui/src/views/register.vue
0 → 100644
浏览文件 @
5397e345
<
template
>
<div
class=
"register"
>
<el-form
ref=
"registerForm"
:model=
"registerForm"
:rules=
"registerRules"
class=
"register-form"
>
<h3
class=
"title"
>
若依后台管理系统
</h3>
<el-form-item
prop=
"username"
>
<el-input
v-model=
"registerForm.username"
type=
"text"
auto-complete=
"off"
placeholder=
"账号"
>
<svg-icon
slot=
"prefix"
icon-class=
"user"
class=
"el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item
prop=
"password"
>
<el-input
v-model=
"registerForm.password"
type=
"password"
auto-complete=
"off"
placeholder=
"密码"
@
keyup
.
enter
.
native=
"handleRegister"
>
<svg-icon
slot=
"prefix"
icon-class=
"password"
class=
"el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item
prop=
"confirmPassword"
>
<el-input
v-model=
"registerForm.confirmPassword"
type=
"password"
auto-complete=
"off"
placeholder=
"确认密码"
@
keyup
.
enter
.
native=
"handleRegister"
>
<svg-icon
slot=
"prefix"
icon-class=
"password"
class=
"el-input__icon input-icon"
/>
</el-input>
</el-form-item>
<el-form-item
prop=
"code"
v-if=
"captchaOnOff"
>
<el-input
v-model=
"registerForm.code"
auto-complete=
"off"
placeholder=
"验证码"
style=
"width: 63%"
@
keyup
.
enter
.
native=
"handleRegister"
>
<svg-icon
slot=
"prefix"
icon-class=
"validCode"
class=
"el-input__icon input-icon"
/>
</el-input>
<div
class=
"register-code"
>
<img
:src=
"codeUrl"
@
click=
"getCode"
class=
"register-code-img"
/>
</div>
</el-form-item>
<el-form-item
style=
"width:100%;"
>
<el-button
:loading=
"loading"
size=
"medium"
type=
"primary"
style=
"width:100%;"
@
click
.
native
.
prevent=
"handleRegister"
>
<span
v-if=
"!loading"
>
注 册
</span>
<span
v-else
>
注 册 中...
</span>
</el-button>
<div
style=
"float: right;"
>
<router-link
class=
"link-type"
:to=
"'/login'"
>
使用已有账户登录
</router-link>
</div>
</el-form-item>
</el-form>
<!-- 底部 -->
<div
class=
"el-register-footer"
>
<span>
Copyright © 2018-2021 ruoyi.vip All Rights Reserved.
</span>
</div>
</div>
</
template
>
<
script
>
import
{
getCodeImg
,
register
}
from
"@/api/login"
;
export
default
{
name
:
"Register"
,
data
()
{
const
equalToPassword
=
(
rule
,
value
,
callback
)
=>
{
if
(
this
.
registerForm
.
password
!==
value
)
{
callback
(
new
Error
(
"两次输入的密码不一致"
));
}
else
{
callback
();
}
};
return
{
codeUrl
:
""
,
registerForm
:
{
username
:
""
,
password
:
""
,
confirmPassword
:
""
,
code
:
""
,
uuid
:
""
},
registerRules
:
{
username
:
[
{
required
:
true
,
trigger
:
"blur"
,
message
:
"请输入您的账号"
},
{
min
:
2
,
max
:
20
,
message
:
'用户账号长度必须介于 2 和 20 之间'
,
trigger
:
'blur'
}
],
password
:
[
{
required
:
true
,
trigger
:
"blur"
,
message
:
"请输入您的密码"
},
{
min
:
5
,
max
:
20
,
message
:
'用户密码长度必须介于 5 和 20 之间'
,
trigger
:
'blur'
}
],
confirmPassword
:
[
{
required
:
true
,
trigger
:
"blur"
,
message
:
"请再次输入您的密码"
},
{
required
:
true
,
validator
:
equalToPassword
,
trigger
:
"blur"
}
],
code
:
[{
required
:
true
,
trigger
:
"change"
,
message
:
"请输入验证码"
}]
},
loading
:
false
,
captchaOnOff
:
true
};
},
created
()
{
this
.
getCode
();
},
methods
:
{
getCode
()
{
getCodeImg
().
then
(
res
=>
{
this
.
captchaOnOff
=
res
.
captchaOnOff
===
undefined
?
true
:
res
.
captchaOnOff
;
if
(
this
.
captchaOnOff
)
{
this
.
codeUrl
=
"data:image/gif;base64,"
+
res
.
img
;
this
.
registerForm
.
uuid
=
res
.
uuid
;
}
});
},
handleRegister
()
{
this
.
$refs
.
registerForm
.
validate
(
valid
=>
{
if
(
valid
)
{
this
.
loading
=
true
;
register
(
this
.
registerForm
).
then
(
res
=>
{
const
username
=
this
.
registerForm
.
username
;
this
.
$alert
(
"<font color='red'>恭喜你,您的账号 "
+
username
+
" 注册成功!</font>"
,
'系统提示'
,
{
dangerouslyUseHTMLString
:
true
}).
then
(()
=>
{
this
.
$router
.
push
(
"/login"
);
}).
catch
(()
=>
{});
}).
catch
(()
=>
{
this
.
loading
=
false
;
if
(
this
.
captchaOnOff
)
{
this
.
getCode
();
}
})
}
});
}
}
};
</
script
>
<
style
rel=
"stylesheet/scss"
lang=
"scss"
>
.register
{
display
:
flex
;
justify-content
:
center
;
align-items
:
center
;
height
:
100%
;
background-image
:
url("../assets/images/login-background.jpg")
;
background-size
:
cover
;
}
.title
{
margin
:
0px
auto
30px
auto
;
text-align
:
center
;
color
:
#707070
;
}
.register-form
{
border-radius
:
6px
;
background
:
#ffffff
;
width
:
400px
;
padding
:
25px
25px
5px
25px
;
.el-input
{
height
:
38px
;
input
{
height
:
38px
;
}
}
.input-icon
{
height
:
39px
;
width
:
14px
;
margin-left
:
2px
;
}
}
.register-tip
{
font-size
:
13px
;
text-align
:
center
;
color
:
#bfbfbf
;
}
.register-code
{
width
:
33%
;
height
:
38px
;
float
:
right
;
img
{
cursor
:
pointer
;
vertical-align
:
middle
;
}
}
.el-register-footer
{
height
:
40px
;
line-height
:
40px
;
position
:
fixed
;
bottom
:
0
;
width
:
100%
;
text-align
:
center
;
color
:
#fff
;
font-family
:
Arial
;
font-size
:
12px
;
letter-spacing
:
1px
;
}
.register-code-img
{
height
:
38px
;
}
</
style
>
ruoyi-ui/src/views/system/user/index.vue
浏览文件 @
5397e345
...
@@ -436,7 +436,8 @@ export default {
...
@@ -436,7 +436,8 @@ export default {
// 表单校验
// 表单校验
rules
:
{
rules
:
{
userName
:
[
userName
:
[
{
required
:
true
,
message
:
"用户名称不能为空"
,
trigger
:
"blur"
}
{
required
:
true
,
message
:
"用户名称不能为空"
,
trigger
:
"blur"
},
{
min
:
2
,
max
:
20
,
message
:
'用户名称长度必须介于 2 和 20 之间'
,
trigger
:
'blur'
}
],
],
nickName
:
[
nickName
:
[
{
required
:
true
,
message
:
"用户昵称不能为空"
,
trigger
:
"blur"
}
{
required
:
true
,
message
:
"用户昵称不能为空"
,
trigger
:
"blur"
}
...
...
sql/ry_202107
13
.sql
→
sql/ry_202107
31
.sql
浏览文件 @
5397e345
...
@@ -534,10 +534,11 @@ create table sys_config (
...
@@ -534,10 +534,11 @@ create table sys_config (
primary
key
(
config_id
)
primary
key
(
config_id
)
)
engine
=
innodb
auto_increment
=
100
comment
=
'参数配置表'
;
)
engine
=
innodb
auto_increment
=
100
comment
=
'参数配置表'
;
insert
into
sys_config
values
(
1
,
'主框架页-默认皮肤样式名称'
,
'sys.index.skinName'
,
'skin-blue'
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow'
);
insert
into
sys_config
values
(
1
,
'主框架页-默认皮肤样式名称'
,
'sys.index.skinName'
,
'skin-blue'
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'蓝色 skin-blue、绿色 skin-green、紫色 skin-purple、红色 skin-red、黄色 skin-yellow'
);
insert
into
sys_config
values
(
2
,
'用户管理-账号初始密码'
,
'sys.user.initPassword'
,
'123456'
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'初始化密码 123456'
);
insert
into
sys_config
values
(
2
,
'用户管理-账号初始密码'
,
'sys.user.initPassword'
,
'123456'
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'初始化密码 123456'
);
insert
into
sys_config
values
(
3
,
'主框架页-侧边栏主题'
,
'sys.index.sideTheme'
,
'theme-dark'
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'深色主题theme-dark,浅色主题theme-light'
);
insert
into
sys_config
values
(
3
,
'主框架页-侧边栏主题'
,
'sys.index.sideTheme'
,
'theme-dark'
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'深色主题theme-dark,浅色主题theme-light'
);
insert
into
sys_config
values
(
4
,
'账号自助-验证码开关'
,
'sys.account.captchaOnOff'
,
'true'
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'是否开启登录验证码功能(true开启,false关闭)'
);
insert
into
sys_config
values
(
4
,
'账号自助-验证码开关'
,
'sys.account.captchaOnOff'
,
'true'
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'是否开启验证码功能(true开启,false关闭)'
);
insert
into
sys_config
values
(
5
,
'账号自助-是否开启用户注册功能'
,
'sys.account.registerUser'
,
'false'
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'是否开启注册用户功能(true开启,false关闭)'
);
-- ----------------------------
-- ----------------------------
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论