summaryrefslogtreecommitdiff
path: root/src/main/java
diff options
context:
space:
mode:
authorshizhendong <[email protected]>2024-09-19 15:14:37 +0800
committershizhendong <[email protected]>2024-09-19 15:14:37 +0800
commite17feb87b2dac31d9b7ebb7fd151f48330c71b4b (patch)
tree4db9da0be3ab1917e5607506be71f5e26af57d2b /src/main/java
parentd281ee05d45b7c17c09bcf7b09509c65fbf98c58 (diff)
feat: ASW-82 新增 user profile 接口
Diffstat (limited to 'src/main/java')
-rw-r--r--src/main/java/net/geedge/asw/common/util/RCode.java1
-rw-r--r--src/main/java/net/geedge/asw/module/sys/controller/SysUserController.java47
-rw-r--r--src/main/java/net/geedge/asw/module/sys/entity/SysUserEntity.java8
3 files changed, 53 insertions, 3 deletions
diff --git a/src/main/java/net/geedge/asw/common/util/RCode.java b/src/main/java/net/geedge/asw/common/util/RCode.java
index ead37d0..797b179 100644
--- a/src/main/java/net/geedge/asw/common/util/RCode.java
+++ b/src/main/java/net/geedge/asw/common/util/RCode.java
@@ -28,6 +28,7 @@ public enum RCode {
SYS_USER_BUILT_IN(100016, "Built-in user are not allowed to delete or update"),
SYS_ROLE_BUILT_IN(100017, "Built-in role are not allowed to delete or update"),
SYS_ROLE_NOT_DELETE(100018, "Used role cannot be deleted"),
+ SYS_USER_OLDPWD_INCORRECT(100019, "Incorrect old password. Please try again."),
// Application
diff --git a/src/main/java/net/geedge/asw/module/sys/controller/SysUserController.java b/src/main/java/net/geedge/asw/module/sys/controller/SysUserController.java
index 742ac5a..4ce4f8f 100644
--- a/src/main/java/net/geedge/asw/module/sys/controller/SysUserController.java
+++ b/src/main/java/net/geedge/asw/module/sys/controller/SysUserController.java
@@ -1,7 +1,9 @@
package net.geedge.asw.module.sys.controller;
+import cn.dev33.satoken.stp.StpUtil;
import cn.hutool.log.Log;
import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
+import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
import com.baomidou.mybatisplus.extension.plugins.pagination.Page;
import net.geedge.asw.common.util.*;
import net.geedge.asw.module.sys.entity.SysUserEntity;
@@ -81,4 +83,49 @@ public class SysUserController {
return R.ok();
}
+ @GetMapping("/profile")
+ public R profile() {
+ return this.detail(StpUtil.getLoginIdAsString());
+ }
+
+ @PutMapping("/profile")
+ public R profile(@RequestBody SysUserEntity entity) {
+ T.VerifyUtil.is(entity).notNull()
+ .and(entity.getName()).notEmpty(RCode.NAME_CANNOT_EMPTY)
+ .and(entity.getAccessLevel()).notEmpty(RCode.SYS_ACCESS_LEVEL_CANNOT_EMPTY);
+
+ SysUserEntity loginUser = userService.getById(StpUtil.getLoginIdAsString());
+ T.VerifyUtil.is(loginUser).notNull(RCode.USER_NO_LOGIN);
+
+ // update fields
+ String name = entity.getName();
+ String accessLevel = entity.getAccessLevel();
+ String pwd = entity.getPwd();
+ String oldPwd = entity.getOldPwd();
+ String language = entity.getLanguage();
+
+ // pwd
+ if (T.StrUtil.isAllNotEmpty(pwd, oldPwd)) {
+ // validate
+ String encrypt = T.AesUtil.decrypt(loginUser.getPwd(), Constants.AES_KEY);
+ if (!T.StrUtil.equals(encrypt, oldPwd)) {
+ throw new ASWException(RCode.SYS_USER_OLDPWD_INCORRECT);
+ }
+ // encrypt pwd
+ pwd = T.AesUtil.encrypt(pwd, Constants.AES_KEY);
+ }
+
+ userService.update(
+ new LambdaUpdateWrapper<SysUserEntity>()
+ .set(SysUserEntity::getName, name)
+ .set(SysUserEntity::getAccessLevel, accessLevel)
+ .set(T.StrUtil.isAllNotEmpty(pwd, oldPwd), SysUserEntity::getPwd, pwd)
+ .set(T.StrUtil.isNotEmpty(language), SysUserEntity::getLanguage, language)
+ .set(SysUserEntity::getUpdateTimestamp, System.currentTimeMillis())
+ .set(SysUserEntity::getUpdateUserId, loginUser.getId())
+ .eq(SysUserEntity::getId, loginUser.getId())
+ );
+ return R.ok().putData("id", loginUser.getId());
+ }
+
}
diff --git a/src/main/java/net/geedge/asw/module/sys/entity/SysUserEntity.java b/src/main/java/net/geedge/asw/module/sys/entity/SysUserEntity.java
index 7e05713..413a0b5 100644
--- a/src/main/java/net/geedge/asw/module/sys/entity/SysUserEntity.java
+++ b/src/main/java/net/geedge/asw/module/sys/entity/SysUserEntity.java
@@ -1,15 +1,14 @@
package net.geedge.asw.module.sys.entity;
-import java.util.List;
-
import com.baomidou.mybatisplus.annotation.IdType;
import com.baomidou.mybatisplus.annotation.TableField;
import com.baomidou.mybatisplus.annotation.TableId;
import com.baomidou.mybatisplus.annotation.TableName;
-
import lombok.Data;
import net.geedge.asw.module.workspace.entity.WorkspaceMemberEntity;
+import java.util.List;
+
@Data
@TableName("sys_user")
public class SysUserEntity {
@@ -24,6 +23,9 @@ public class SysUserEntity {
private String pwd;
+ @TableField(exist = false)
+ private String oldPwd;
+
private String accessLevel;
private String language;