1 files renamed
6 files modified
| | |
| | | @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),
|
| | |
| | | this.loginDate = loginDate;
|
| | | }
|
| | |
|
| | | public Date getPwdUpdateDate()
|
| | | {
|
| | | return pwdUpdateDate;
|
| | | }
|
| | |
|
| | | public void setPwdUpdateDate(Date pwdUpdateDate)
|
| | | {
|
| | | this.pwdUpdateDate = pwdUpdateDate;
|
| | | }
|
| | |
|
| | | public SysDept getDept()
|
| | | {
|
| | | return dept;
|
| | |
| | | .append("delFlag", getDelFlag())
|
| | | .append("loginIp", getLoginIp())
|
| | | .append("loginDate", getLoginDate())
|
| | | .append("pwdUpdateDate", getPwdUpdateDate())
|
| | | .append("createBy", getCreateBy())
|
| | | .append("createTime", getCreateTime())
|
| | | .append("updateBy", getUpdateBy())
|
| | |
| | | import org.springframework.web.bind.annotation.RestController;
|
| | | import org.springframework.web.multipart.MultipartFile;
|
| | | import com.ruoyi.common.core.domain.R;
|
| | | import com.ruoyi.common.core.utils.DateUtils;
|
| | | import com.ruoyi.common.core.utils.StringUtils;
|
| | | import com.ruoyi.common.core.utils.file.FileTypeUtils;
|
| | | import com.ruoyi.common.core.utils.file.MimeTypeUtils;
|
| | |
| | | newPassword = SecurityUtils.encryptPassword(newPassword);
|
| | | if (userService.resetUserPwd(userName, newPassword) > 0)
|
| | | {
|
| | | // 更新缓存用户密码
|
| | | // 更新缓存用户密码&密码最后更新时间
|
| | | loginUser.getSysUser().setPwdUpdateDate(DateUtils.getNowDate());
|
| | | loginUser.getSysUser().setPassword(newPassword);
|
| | | tokenService.setLoginUser(loginUser);
|
| | | return success();
|
| | |
| | | package com.ruoyi.system.controller;
|
| | |
|
| | | import java.io.IOException;
|
| | | import java.util.Date;
|
| | | import java.util.List;
|
| | | import java.util.Set;
|
| | | import java.util.stream.Collectors;
|
| | |
| | | import org.springframework.web.bind.annotation.RestController;
|
| | | import org.springframework.web.multipart.MultipartFile;
|
| | | import com.ruoyi.common.core.domain.R;
|
| | | import com.ruoyi.common.core.text.Convert;
|
| | | import com.ruoyi.common.core.utils.StringUtils;
|
| | | import com.ruoyi.common.core.utils.poi.ExcelUtil;
|
| | | import com.ruoyi.common.core.web.controller.BaseController;
|
| | |
| | | ajax.put("user", user);
|
| | | ajax.put("roles", roles);
|
| | | ajax.put("permissions", permissions);
|
| | | ajax.put("isDefaultModifyPwd", initPasswordIsModify(user.getPwdUpdateDate()));
|
| | | return ajax;
|
| | | }
|
| | |
|
| | | // 检查初始密码是否提醒修改
|
| | | public boolean initPasswordIsModify(Date pwdUpdateDate)
|
| | | {
|
| | | Integer initPasswordModify = Convert.toInt(configService.selectConfigByKey("sys.account.initPasswordModify"));
|
| | | return initPasswordModify != null && initPasswordModify == 1 && pwdUpdateDate == null;
|
| | | }
|
| | |
|
| | | /**
|
| | | * 根据用户编号获取详细信息
|
| | | */
|
| | |
| | | <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>
|
| | |
| | | </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
|
| | |
| | | </update>
|
| | |
|
| | | <update id="resetUserPwd" parameterType="SysUser">
|
| | | update sys_user set password = #{password} where user_name = #{userName}
|
| | | update sys_user set pwd_update_date = sysdate(), password = #{password} where user_name = #{userName}
|
| | | </update>
|
| | |
|
| | | <delete id="deleteUserById" parameterType="Long">
|
| | |
| | | import router from '@/router'
|
| | | import { MessageBox, } from 'element-ui'
|
| | | import { login, logout, getInfo, refreshToken } from '@/api/login'
|
| | | import { getToken, setToken, setExpiresIn, removeToken } from '@/utils/auth'
|
| | | import { isEmpty } from "@/utils/validate"
|
| | |
| | | SET_NAME: (state, name) => {
|
| | | state.name = name
|
| | | },
|
| | | SET_NICK_NAME: (state, nickName) =>{
|
| | | SET_NICK_NAME: (state, nickName) => {
|
| | | state.nickName = nickName
|
| | | },
|
| | | SET_AVATAR: (state, avatar) => {
|
| | |
| | | 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)
|
| | |
| | | <div slot="header" class="clearfix"> |
| | | <span>基本资料</span> |
| | | </div> |
| | | <el-tabs v-model="activeTab"> |
| | | <el-tabs v-model="selectedTab"> |
| | | <el-tab-pane label="基本资料" name="userinfo"> |
| | | <userInfo :user="user" /> |
| | | </el-tab-pane> |
| | |
| | | user: {}, |
| | | roleGroup: {}, |
| | | postGroup: {}, |
| | | activeTab: "userinfo" |
| | | selectedTab: "userinfo" |
| | | } |
| | | }, |
| | | created() { |
| | | const activeTab = this.$route.params && this.$route.params.activeTab |
| | | if (activeTab) { |
| | | this.selectedTab = activeTab |
| | | } |
| | | this.getUser() |
| | | }, |
| | | methods: { |
| File was renamed from sql/ry_20250425.sql |
| | |
| | | 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 '更新者', |
| | |
| | | -- ---------------------------- |
| | | -- 初始化-用户信息表数据 |
| | | -- ---------------------------- |
| | | 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, '测试员'); |
| | | |
| | | |
| | | -- ---------------------------- |
| | |
| | | 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.registerUser', 'false', 'Y', 'admin', sysdate(), '', null, '是否开启注册用户功能(true开启,false关闭)'); |
| | | insert into sys_config values(5, '用户登录-黑名单列表', '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.registerUser', 'false', 'Y', 'admin', sysdate(), '', null, '是否开启注册用户功能(true开启,false关闭)'); |
| | | insert into sys_config values(5, '用户登录-黑名单列表', 'sys.login.blackIPList', '', 'Y', 'admin', sysdate(), '', null, '设置登录IP黑名单限制,多个匹配项以;分隔,支持匹配(*通配、网段)'); |
| | | insert into sys_config values(6, '用户管理-初始密码修改策略', 'sys.account.initPasswordModify', '1', 'Y', 'admin', sysdate(), '', null, '0:初始密码修改策略关闭,没有任何提示,1:提醒用户,如果未修改初始密码,则在登录时就会提醒修改密码对话框'); |
| | | |
| | | |
| | | -- ---------------------------- |