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
8ff01355
提交
8ff01355
authored
5月 22, 2025
作者:
RuoYi
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
初始密码支持自定义修改策略
上级
673249d3
隐藏空白字符变更
内嵌
并排
正在显示
6 个修改的文件
包含
74 行增加
和
31 行删除
+74
-31
SysLoginController.java
...a/com/ruoyi/web/controller/system/SysLoginController.java
+14
-0
SysUser.java
...ain/java/com/ruoyi/common/core/domain/entity/SysUser.java
+14
-0
SysUserMapper.xml
...system/src/main/resources/mapper/system/SysUserMapper.xml
+21
-20
user.js
ruoyi-ui/src/store/modules/user.js
+9
-1
index.vue
ruoyi-ui/src/views/system/user/profile/index.vue
+6
-2
ry_20250522.sql
sql/ry_20250522.sql
+10
-8
没有找到文件。
ruoyi-admin/src/main/java/com/ruoyi/web/controller/system/SysLoginController.java
浏览文件 @
8ff01355
package
com
.
ruoyi
.
web
.
controller
.
system
;
import
java.util.Date
;
import
java.util.List
;
import
java.util.Set
;
import
org.springframework.beans.factory.annotation.Autowired
;
...
...
@@ -13,10 +14,12 @@ import com.ruoyi.common.core.domain.entity.SysMenu;
import
com.ruoyi.common.core.domain.entity.SysUser
;
import
com.ruoyi.common.core.domain.model.LoginBody
;
import
com.ruoyi.common.core.domain.model.LoginUser
;
import
com.ruoyi.common.core.text.Convert
;
import
com.ruoyi.common.utils.SecurityUtils
;
import
com.ruoyi.framework.web.service.SysLoginService
;
import
com.ruoyi.framework.web.service.SysPermissionService
;
import
com.ruoyi.framework.web.service.TokenService
;
import
com.ruoyi.system.service.ISysConfigService
;
import
com.ruoyi.system.service.ISysMenuService
;
/**
...
...
@@ -39,6 +42,9 @@ public class SysLoginController
@Autowired
private
TokenService
tokenService
;
@Autowired
private
ISysConfigService
configService
;
/**
* 登录方法
*
...
...
@@ -79,6 +85,7 @@ public class SysLoginController
ajax
.
put
(
"user"
,
user
);
ajax
.
put
(
"roles"
,
roles
);
ajax
.
put
(
"permissions"
,
permissions
);
ajax
.
put
(
"isDefaultModifyPwd"
,
initPasswordIsModify
(
user
.
getPwdUpdateDate
()));
return
ajax
;
}
...
...
@@ -94,4 +101,11 @@ public class SysLoginController
List
<
SysMenu
>
menus
=
menuService
.
selectMenuTreeByUserId
(
userId
);
return
AjaxResult
.
success
(
menuService
.
buildMenus
(
menus
));
}
// 检查初始密码是否提醒修改
public
boolean
initPasswordIsModify
(
Date
pwdUpdateDate
)
{
Integer
initPasswordModify
=
Convert
.
toInt
(
configService
.
selectConfigByKey
(
"sys.account.initPasswordModify"
));
return
initPasswordModify
!=
null
&&
initPasswordModify
==
1
&&
pwdUpdateDate
==
null
;
}
}
ruoyi-common/src/main/java/com/ruoyi/common/core/domain/entity/SysUser.java
浏览文件 @
8ff01355
...
...
@@ -70,6 +70,9 @@ public class SysUser extends BaseEntity
@Excel
(
name
=
"最后登录时间"
,
width
=
30
,
dateFormat
=
"yyyy-MM-dd HH:mm:ss"
,
type
=
Type
.
EXPORT
)
private
Date
loginDate
;
/** 密码最后更新时间 */
private
Date
pwdUpdateDate
;
/** 部门对象 */
@Excels
({
@Excel
(
name
=
"部门名称"
,
targetAttr
=
"deptName"
,
type
=
Type
.
EXPORT
),
...
...
@@ -247,6 +250,16 @@ public class SysUser extends BaseEntity
this
.
loginDate
=
loginDate
;
}
public
Date
getPwdUpdateDate
()
{
return
pwdUpdateDate
;
}
public
void
setPwdUpdateDate
(
Date
pwdUpdateDate
)
{
this
.
pwdUpdateDate
=
pwdUpdateDate
;
}
public
SysDept
getDept
()
{
return
dept
;
...
...
@@ -313,6 +326,7 @@ public class SysUser extends BaseEntity
.
append
(
"delFlag"
,
getDelFlag
())
.
append
(
"loginIp"
,
getLoginIp
())
.
append
(
"loginDate"
,
getLoginDate
())
.
append
(
"pwdUpdateDate"
,
getPwdUpdateDate
())
.
append
(
"createBy"
,
getCreateBy
())
.
append
(
"createTime"
,
getCreateTime
())
.
append
(
"updateBy"
,
getUpdateBy
())
...
...
ruoyi-system/src/main/resources/mapper/system/SysUserMapper.xml
浏览文件 @
8ff01355
...
...
@@ -5,24 +5,25 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
<mapper
namespace=
"com.ruoyi.system.mapper.SysUserMapper"
>
<resultMap
type=
"SysUser"
id=
"SysUserResult"
>
<id
property=
"userId"
column=
"user_id"
/>
<result
property=
"deptId"
column=
"dept_id"
/>
<result
property=
"userName"
column=
"user_name"
/>
<result
property=
"nickName"
column=
"nick_name"
/>
<result
property=
"email"
column=
"email"
/>
<result
property=
"phonenumber"
column=
"phonenumber"
/>
<result
property=
"sex"
column=
"sex"
/>
<result
property=
"avatar"
column=
"avatar"
/>
<result
property=
"password"
column=
"password"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"delFlag"
column=
"del_flag"
/>
<result
property=
"loginIp"
column=
"login_ip"
/>
<result
property=
"loginDate"
column=
"login_date"
/>
<result
property=
"createBy"
column=
"create_by"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateBy"
column=
"update_by"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
<result
property=
"remark"
column=
"remark"
/>
<id
property=
"userId"
column=
"user_id"
/>
<result
property=
"deptId"
column=
"dept_id"
/>
<result
property=
"userName"
column=
"user_name"
/>
<result
property=
"nickName"
column=
"nick_name"
/>
<result
property=
"email"
column=
"email"
/>
<result
property=
"phonenumber"
column=
"phonenumber"
/>
<result
property=
"sex"
column=
"sex"
/>
<result
property=
"avatar"
column=
"avatar"
/>
<result
property=
"password"
column=
"password"
/>
<result
property=
"status"
column=
"status"
/>
<result
property=
"delFlag"
column=
"del_flag"
/>
<result
property=
"loginIp"
column=
"login_ip"
/>
<result
property=
"loginDate"
column=
"login_date"
/>
<result
property=
"pwdUpdateDate"
column=
"pwd_update_date"
/>
<result
property=
"createBy"
column=
"create_by"
/>
<result
property=
"createTime"
column=
"create_time"
/>
<result
property=
"updateBy"
column=
"update_by"
/>
<result
property=
"updateTime"
column=
"update_time"
/>
<result
property=
"remark"
column=
"remark"
/>
<association
property=
"dept"
javaType=
"SysDept"
resultMap=
"deptResult"
/>
<collection
property=
"roles"
javaType=
"java.util.List"
resultMap=
"RoleResult"
/>
</resultMap>
...
...
@@ -47,7 +48,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</resultMap>
<sql
id=
"selectUserVo"
>
select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.create_by, u.create_time, u.remark,
select u.user_id, u.dept_id, u.user_name, u.nick_name, u.email, u.avatar, u.phonenumber, u.password, u.sex, u.status, u.del_flag, u.login_ip, u.login_date, u.
pwd_update_date, u.
create_by, u.create_time, u.remark,
d.dept_id, d.parent_id, d.ancestors, d.dept_name, d.order_num, d.leader, d.status as dept_status,
r.role_id, r.role_name, r.role_key, r.role_sort, r.data_scope, r.status as role_status
from sys_user u
...
...
@@ -203,7 +204,7 @@ PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN"
</update>
<update
id=
"resetUserPwd"
parameterType=
"SysUser"
>
update sys_user set password = #{password} where user_name = #{userName}
update sys_user set p
wd_update_date = sysdate(), p
assword = #{password} where user_name = #{userName}
</update>
<delete
id=
"deleteUserById"
parameterType=
"Long"
>
...
...
ruoyi-ui/src/store/modules/user.js
浏览文件 @
8ff01355
import
router
from
'@/router'
import
{
MessageBox
,
}
from
'element-ui'
import
{
login
,
logout
,
getInfo
}
from
'@/api/login'
import
{
getToken
,
setToken
,
removeToken
}
from
'@/utils/auth'
import
{
isHttp
,
isEmpty
}
from
"@/utils/validate"
...
...
@@ -24,7 +26,7 @@ const user = {
SET_NAME
:
(
state
,
name
)
=>
{
state
.
name
=
name
},
SET_NICK_NAME
:
(
state
,
nickName
)
=>
{
SET_NICK_NAME
:
(
state
,
nickName
)
=>
{
state
.
nickName
=
nickName
},
SET_AVATAR
:
(
state
,
avatar
)
=>
{
...
...
@@ -75,6 +77,12 @@ const user = {
commit
(
'SET_NAME'
,
user
.
userName
)
commit
(
'SET_NICK_NAME'
,
user
.
nickName
)
commit
(
'SET_AVATAR'
,
avatar
)
/* 初始密码提示 */
if
(
res
.
isDefaultModifyPwd
)
{
MessageBox
.
confirm
(
'您的密码还是初始密码,请修改密码!'
,
'安全提示'
,
{
confirmButtonText
:
'确定'
,
cancelButtonText
:
'取消'
,
type
:
'warning'
}).
then
(()
=>
{
router
.
push
({
name
:
'Profile'
,
params
:
{
activeTab
:
'resetPwd'
}
})
}).
catch
(()
=>
{})
}
resolve
(
res
)
}).
catch
(
error
=>
{
reject
(
error
)
...
...
ruoyi-ui/src/views/system/user/profile/index.vue
浏览文件 @
8ff01355
...
...
@@ -44,7 +44,7 @@
<div
slot=
"header"
class=
"clearfix"
>
<span>
基本资料
</span>
</div>
<el-tabs
v-model=
"
active
Tab"
>
<el-tabs
v-model=
"
selected
Tab"
>
<el-tab-pane
label=
"基本资料"
name=
"userinfo"
>
<userInfo
:user=
"user"
/>
</el-tab-pane>
...
...
@@ -72,10 +72,14 @@ export default {
user
:
{},
roleGroup
:
{},
postGroup
:
{},
active
Tab
:
"userinfo"
selected
Tab
:
"userinfo"
}
},
created
()
{
const
activeTab
=
this
.
$route
.
params
&&
this
.
$route
.
params
.
activeTab
if
(
activeTab
)
{
this
.
selectedTab
=
activeTab
}
this
.
getUser
()
},
methods
:
{
...
...
sql/ry_20250
417
.sql
→
sql/ry_20250
522
.sql
浏览文件 @
8ff01355
...
...
@@ -54,6 +54,7 @@ create table sys_user (
del_flag
char
(
1
)
default
'0'
comment
'删除标志(0代表存在 2代表删除)'
,
login_ip
varchar
(
128
)
default
''
comment
'最后登录IP'
,
login_date
datetime
comment
'最后登录时间'
,
pwd_update_date
datetime
comment
'密码最后更新时间'
,
create_by
varchar
(
64
)
default
''
comment
'创建者'
,
create_time
datetime
comment
'创建时间'
,
update_by
varchar
(
64
)
default
''
comment
'更新者'
,
...
...
@@ -65,8 +66,8 @@ create table sys_user (
-- ----------------------------
-- 初始化-用户信息表数据
-- ----------------------------
insert
into
sys_user
values
(
1
,
103
,
'admin'
,
'若依'
,
'00'
,
'ry@163.com'
,
'15888888888'
,
'1'
,
''
,
'$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2'
,
'0'
,
'0'
,
'127.0.0.1'
,
sysdate
(),
'admin'
,
sysdate
(),
''
,
null
,
'管理员'
);
insert
into
sys_user
values
(
2
,
105
,
'ry'
,
'若依'
,
'00'
,
'ry@qq.com'
,
'15666666666'
,
'1'
,
''
,
'$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2'
,
'0'
,
'0'
,
'127.0.0.1'
,
sysdate
(),
'admin'
,
sysdate
(),
''
,
null
,
'测试员'
);
insert
into
sys_user
values
(
1
,
103
,
'admin'
,
'若依'
,
'00'
,
'ry@163.com'
,
'15888888888'
,
'1'
,
''
,
'$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2'
,
'0'
,
'0'
,
'127.0.0.1'
,
sysdate
(),
sysdate
(),
'admin'
,
sysdate
(),
''
,
null
,
'管理员'
);
insert
into
sys_user
values
(
2
,
105
,
'ry'
,
'若依'
,
'00'
,
'ry@qq.com'
,
'15666666666'
,
'1'
,
''
,
'$2a$10$7JB720yubVSZvUI0rEqK/.VqGOZTH.ulu33dHOiBE8ByOhJIrdAu2'
,
'0'
,
'0'
,
'127.0.0.1'
,
sysdate
(),
sysdate
(),
'admin'
,
sysdate
(),
''
,
null
,
'测试员'
);
-- ----------------------------
...
...
@@ -544,12 +545,13 @@ create table sys_config (
primary
key
(
config_id
)
)
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
(
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
(
4
,
'账号自助-验证码开关'
,
'sys.account.captchaEnabled'
,
'true'
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'是否开启验证码功能(true开启,false关闭)'
);
insert
into
sys_config
values
(
5
,
'账号自助-是否开启用户注册功能'
,
'sys.account.registerUser'
,
'false'
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'是否开启注册用户功能(true开启,false关闭)'
);
insert
into
sys_config
values
(
6
,
'用户登录-黑名单列表'
,
'sys.login.blackIPList'
,
''
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'设置登录IP黑名单限制,多个匹配项以;分隔,支持匹配(*通配、网段)'
);
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
(
3
,
'主框架页-侧边栏主题'
,
'sys.index.sideTheme'
,
'theme-dark'
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'深色主题theme-dark,浅色主题theme-light'
);
insert
into
sys_config
values
(
4
,
'账号自助-验证码开关'
,
'sys.account.captchaEnabled'
,
'true'
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'是否开启验证码功能(true开启,false关闭)'
);
insert
into
sys_config
values
(
5
,
'账号自助-是否开启用户注册功能'
,
'sys.account.registerUser'
,
'false'
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'是否开启注册用户功能(true开启,false关闭)'
);
insert
into
sys_config
values
(
6
,
'用户登录-黑名单列表'
,
'sys.login.blackIPList'
,
''
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'设置登录IP黑名单限制,多个匹配项以;分隔,支持匹配(*通配、网段)'
);
insert
into
sys_config
values
(
7
,
'用户管理-初始密码修改策略'
,
'sys.account.initPasswordModify'
,
'1'
,
'Y'
,
'admin'
,
sysdate
(),
''
,
null
,
'0:初始密码修改策略关闭,没有任何提示,1:提醒用户,如果未修改初始密码,则在登录时就会提醒修改密码对话框'
);
-- ----------------------------
...
...
编写
预览
Markdown
格式
0%
重试
或
添加新文件
添加附件
取消
您添加了
0
人
到此讨论。请谨慎行事。
请先完成此评论的编辑!
取消
请
注册
或者
登录
后发表评论