Fix last login bug
This commit is contained in:
@@ -24,6 +24,8 @@ object UserConverter {
|
||||
expiration = user.expiration,
|
||||
credentialsExpiration = user.credentialsExpiration,
|
||||
enable = user.enable?.let { it == 1 },
|
||||
currentLoginTime = user.currentLoginTime,
|
||||
currentLoginIp = user.currentLoginIp,
|
||||
lastLoginTime = user.lastLoginTime,
|
||||
lastLoginIp = user.lastLoginIp,
|
||||
createTime = user.createTime,
|
||||
|
||||
@@ -60,6 +60,18 @@ class User() : Serializable {
|
||||
@TableField("enable")
|
||||
var enable: Int? = null
|
||||
|
||||
/**
|
||||
* 当前登录时间
|
||||
*/
|
||||
@TableField("current_login_time")
|
||||
var currentLoginTime: LocalDateTime? = null
|
||||
|
||||
/**
|
||||
* 当前登录 IP
|
||||
*/
|
||||
@TableField("current_login_ip")
|
||||
var currentLoginIp: String? = null
|
||||
|
||||
/**
|
||||
* 上次登录时间
|
||||
*/
|
||||
@@ -108,6 +120,6 @@ class User() : Serializable {
|
||||
var operations: List<Operation>? = null
|
||||
|
||||
override fun toString(): String {
|
||||
return "User(id=$id, username=$username, password=$password, locking=$locking, expiration=$expiration, credentialsExpiration=$credentialsExpiration, enable=$enable, lastLoginTime=$lastLoginTime, lastLoginIp=$lastLoginIp, createTime=$createTime, updateTime=$updateTime, deleted=$deleted, version=$version, roles=$roles, groups=$groups, menus=$menus, elements=$elements, operations=$operations)"
|
||||
return "User(id=$id, username=$username, password=$password, locking=$locking, expiration=$expiration, credentialsExpiration=$credentialsExpiration, enable=$enable, currentLoginTime=$currentLoginTime, currentLoginIp=$currentLoginIp, lastLoginTime=$lastLoginTime, lastLoginIp=$lastLoginIp, createTime=$createTime, updateTime=$updateTime, deleted=$deleted, version=$version, roles=$roles, groups=$groups, menus=$menus, elements=$elements, operations=$operations)"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -36,14 +36,17 @@ class AuthenticationServiceImpl(
|
||||
throw RuntimeException("Login failed")
|
||||
}
|
||||
|
||||
logger.info("用户登录 [用户名: '{}', IP: '{}']", user.username, request.remoteAddr)
|
||||
userService.update(User().apply {
|
||||
lastLoginIp = request.remoteAddr
|
||||
lastLoginTime = LocalDateTime.now(ZoneOffset.UTC)
|
||||
}, KtUpdateWrapper(User()).eq(User::username, user.username))
|
||||
|
||||
val loginUser = authentication.principal as LoginUser
|
||||
loginUser.user.password = ""
|
||||
|
||||
logger.info("用户登录 [用户名: '{}', IP: '{}']", user.username, request.remoteAddr)
|
||||
userService.update(User().apply {
|
||||
currentLoginIp = request.remoteAddr
|
||||
currentLoginTime = LocalDateTime.now(ZoneOffset.UTC)
|
||||
lastLoginIp = loginUser.user.currentLoginIp
|
||||
lastLoginTime = loginUser.user.currentLoginTime
|
||||
}, KtUpdateWrapper(User()).eq(User::username, user.username))
|
||||
|
||||
val userId = loginUser.user.id.toString()
|
||||
val jwt = JwtUtil.createJwt(userId)
|
||||
|
||||
|
||||
@@ -22,6 +22,12 @@ data class UserInfoVo(
|
||||
@Schema(description = "是否启用", example = "true")
|
||||
val enable: Boolean?,
|
||||
|
||||
@Schema(description = "当前登录时间", example = "1900-01-01T00:00:00.000Z")
|
||||
val currentLoginTime: LocalDateTime?,
|
||||
|
||||
@Schema(description = "当前登录 IP", example = "1.1.1.1")
|
||||
val currentLoginIp: String?,
|
||||
|
||||
@Schema(description = "最后登录时间", example = "1900-01-01T00:00:00.000Z")
|
||||
val lastLoginTime: LocalDateTime?,
|
||||
|
||||
|
||||
@@ -41,14 +41,15 @@ on duplicate key update name = values(name),
|
||||
power_id = values(power_id),
|
||||
parent_id = values(parent_id);
|
||||
|
||||
insert into t_element(id, name, power_id, menu_id)
|
||||
values (1010100, '公用', id, 1010000),
|
||||
(101010100, '角色基础', id, 101010000),
|
||||
(102010100, '用户组基础', id, 102010000),
|
||||
(103010100, '用户基础', id, 103010000)
|
||||
insert into t_element(id, name, power_id, menu_id, parent_id)
|
||||
values (1010100, '公用', id, 1010000, null),
|
||||
(101010100, '角色基础', id, 101010000, null),
|
||||
(102010100, '用户组基础', id, 102010000, null),
|
||||
(103010100, '用户基础', id, 103010000, null)
|
||||
on duplicate key update name = values(name),
|
||||
power_id=values(power_id),
|
||||
menu_id = values(menu_id);
|
||||
menu_id = values(menu_id),
|
||||
parent_id = values(parent_id);
|
||||
|
||||
insert into t_operation(id, name, code, power_id, element_id, parent_id)
|
||||
values (1010101, '查询当前用户信息', 'common:user:self', id, 1010100, null),
|
||||
|
||||
@@ -9,6 +9,8 @@ create table if not exists t_user
|
||||
expiration datetime comment '过期时间',
|
||||
credentials_expiration datetime comment '认证过期时间',
|
||||
enable int not null comment '启用',
|
||||
current_login_time datetime comment '当前登录时间',
|
||||
current_login_ip varchar(128) comment '当前登录 IP',
|
||||
last_login_time datetime comment '上次登录时间',
|
||||
last_login_ip varchar(128) comment '上次登录 IP',
|
||||
create_time datetime not null default (utc_timestamp()) comment '创建时间',
|
||||
|
||||
@@ -5,6 +5,6 @@ create table if not exists t_element
|
||||
id bigint not null primary key,
|
||||
name varchar(100) not null comment '元素名',
|
||||
power_id bigint not null comment '权限ID',
|
||||
parent_id bigint not null comment '父ID',
|
||||
parent_id bigint null comment '父ID',
|
||||
menu_id bigint not null comment '菜单ID'
|
||||
) comment '页面元素';
|
||||
@@ -9,6 +9,8 @@
|
||||
t_user.expiration as user_expiration,
|
||||
t_user.credentials_expiration as user_credentials_expiration,
|
||||
t_user.enable as user_enable,
|
||||
t_user.current_login_time as user_current_login_time,
|
||||
t_user.current_login_ip as user_current_login_ip,
|
||||
t_user.last_login_time as user_last_login_time,
|
||||
t_user.last_login_ip as user_last_login_ip,
|
||||
t_user.create_time as user_create_time,
|
||||
@@ -54,6 +56,8 @@
|
||||
<result property="expiration" column="user_expiration"/>
|
||||
<result property="credentialsExpiration" column="user_credentials_expiration"/>
|
||||
<result property="enable" column="user_enable"/>
|
||||
<result property="currentLoginTime" column="user_current_login_time"/>
|
||||
<result property="currentLoginIp" column="user_current_login_ip"/>
|
||||
<result property="lastLoginTime" column="user_last_login_time"/>
|
||||
<result property="lastLoginIp" column="user_last_login_ip"/>
|
||||
<result property="createTime" column="user_create_time"/>
|
||||
|
||||
Reference in New Issue
Block a user