Przeglądaj źródła

删除 Role 的 title 字段

reghao 2 lat temu
rodzic
commit
9ef6cc53a8
18 zmienionych plików z 37 dodań i 65 usunięć
  1. 1 1
      manager/src/main/java/cn/reghao/devops/manager/account/controller/AccountProfileController.java
  2. 1 1
      manager/src/main/java/cn/reghao/devops/manager/account/db/query/RoleQuery.java
  3. 4 4
      manager/src/main/java/cn/reghao/devops/manager/account/db/query/RoleQueryImpl.java
  4. 1 1
      manager/src/main/java/cn/reghao/devops/manager/account/db/repository/RoleRepository.java
  5. 6 12
      manager/src/main/java/cn/reghao/devops/manager/account/model/constant/RoleType.java
  6. 1 12
      manager/src/main/java/cn/reghao/devops/manager/account/model/dto/RoleDTO.java
  7. 1 5
      manager/src/main/java/cn/reghao/devops/manager/account/model/po/Role.java
  8. 1 1
      manager/src/main/java/cn/reghao/devops/manager/account/model/po/User.java
  9. 1 3
      manager/src/main/java/cn/reghao/devops/manager/account/model/vo/RoleVO.java
  10. 3 2
      manager/src/main/java/cn/reghao/devops/manager/account/service/impl/AccountServiceImpl.java
  11. 4 4
      manager/src/main/java/cn/reghao/devops/manager/account/service/impl/RoleServiceImpl.java
  12. 2 2
      manager/src/main/java/cn/reghao/devops/manager/home/service/HomeService.java
  13. 1 0
      manager/src/main/java/cn/reghao/devops/manager/util/UserContext.java
  14. 1 1
      manager/src/main/resources/application-dev.yml
  15. 3 9
      manager/src/main/resources/templates/rbac/role/add.html
  16. 2 2
      manager/src/main/resources/templates/rbac/role/detail.html
  17. 3 5
      manager/src/main/resources/templates/rbac/role/index.html
  18. 1 0
      manager/src/main/resources/templates/rbac/user/userinfo.html

+ 1 - 1
manager/src/main/java/cn/reghao/devops/manager/account/controller/AccountProfileController.java

@@ -63,7 +63,7 @@ public class AccountProfileController {
     @ApiOperation(value = "修改用户信息")
     @PostMapping(value = "/edit", produces = MediaType.APPLICATION_JSON_VALUE)
     public String editUserInfo(@Validated AccountProfile accountProfile) {
-        //accountService.updateAccountProfile(accountProfile);
+        accountService.updateAccountProfile(accountProfile);
         return WebResult.success();
     }
 

+ 1 - 1
manager/src/main/java/cn/reghao/devops/manager/account/db/query/RoleQuery.java

@@ -14,7 +14,7 @@ import java.util.List;
  * @date 2021-07-12 15:32:26
  */
 public interface RoleQuery extends BaseQuery<Role> {
-    Role findByTitle(String title);
+    Role findByName(String name);
     Page<RoleVO> getRoleVOByPage(PageRequest pageRequest);
     List<RoleVO> getByMatchName(String name);
     RoleVO getRoleVOById(Integer id);

+ 4 - 4
manager/src/main/java/cn/reghao/devops/manager/account/db/query/RoleQueryImpl.java

@@ -40,8 +40,8 @@ public class RoleQueryImpl implements RoleQuery {
     }
 
     @Override
-    public Role findByTitle(String title) {
-        return roleRepository.findByTitle(title);
+    public Role findByName(String name) {
+        return roleRepository.findByName(name);
     }
 
     @Override
@@ -92,11 +92,11 @@ public class RoleQueryImpl implements RoleQuery {
      */
     @Override
     public List<User> getUsersByRole(Role role) {
-        String title = role.getTitle();
+        String name = role.getName();
         Specification<User> specification = ((root, query, cb) -> {
             SetJoin<User, String> setJoin = root.joinSet("role");
             // User 中 Set 的元素是原始类型
-            Predicate predicate = setJoin.as(String.class).in(title);
+            Predicate predicate = setJoin.as(String.class).in(name);
             // User 中的 Set 的元素是某个对象, fieldName 表示对象的某个字段名
             //Predicate predicate = cb.equal(setJoin.get("fieldName"), title);
             return cb.and(predicate);

+ 1 - 1
manager/src/main/java/cn/reghao/devops/manager/account/db/repository/RoleRepository.java

@@ -9,5 +9,5 @@ import org.springframework.data.jpa.repository.JpaSpecificationExecutor;
  * @date 2019-08-29 10:52:14
  */
 public interface RoleRepository extends JpaRepository<Role, Integer>, JpaSpecificationExecutor<Role> {
-    Role findByTitle(String title);
+    Role findByName(String name);
 }

+ 6 - 12
manager/src/main/java/cn/reghao/devops/manager/account/model/constant/RoleType.java

@@ -7,24 +7,18 @@ package cn.reghao.devops.manager.account.model.constant;
  * @date 2021-04-05 02:22:44
  */
 public enum RoleType {
-    ROLE_ADMIN("管理员", ""),
-    ROLE_USER("普通用户", ""),
-    ROLE_BACKEND("后端", ""),
-    ROLE_FRONTEND("前端", ""),
-    ROLE_TEST("测试", "");
+    ROLE_ADMIN("管理员"),
+    ROLE_USER("普通用户"),
+    ROLE_BACKEND("后端"),
+    ROLE_FRONTEND("前端"),
+    ROLE_TEST("测试");
 
-    private final String name;
     private final String desc;
 
-    RoleType(String name, String desc) {
-        this.name = name;
+    RoleType(String desc) {
         this.desc = desc;
     }
 
-    public String getName() {
-        return name;
-    }
-
     public String getDesc() {
         return desc;
     }

+ 1 - 12
manager/src/main/java/cn/reghao/devops/manager/account/model/dto/RoleDTO.java

@@ -17,29 +17,18 @@ import javax.validation.constraints.Pattern;
 public class RoleDTO {
     private Integer roleId;
     @Pattern(regexp = "^\\w+$", message = "角色只能是数字、英文字符和下划线")
-    private String title;
-    @Pattern(regexp = "^[\\u4e00-\\u9fa5]{0,}$", message = "角色名只能是中文字符")
     private String name;
     @Length(max = 100, message = "描述的长度不超过 100 个中文字符")
     private String description;
     private String createTime;
 
-    public RoleDTO(Role role) {
-        this.roleId = role.getId();
-        this.title = role.getTitle().split("ROLE_")[1];
-        this.name = role.getName();
-        this.description = role.getDescription();
-        this.createTime = DateTimeConverter.format(role.getCreateTime());
-    }
-
     public Role to() {
         Role role = new Role();
         if (this.getRoleId() != null) {
             role.setId(this.getRoleId());
         }
 
-        role.setTitle("ROLE_" + this.getTitle());
-        role.setName(this.getName());
+        role.setName("ROLE_" + this.getName());
         role.setDescription(this.getDescription());
         return role;
     }

+ 1 - 5
manager/src/main/java/cn/reghao/devops/manager/account/model/po/Role.java

@@ -26,9 +26,6 @@ public class Role extends BaseEntity {
     // @Pattern(regexp = "^[a-z]+$", message = "角色只能是英文字符")
     @Pattern(regexp = "^\\w+$", message = "角色只能是英文字符")
     @Column(unique = true, nullable = false)
-    private String title;
-    @Pattern(regexp = "^[\\u4e00-\\u9fa5]{0,}$", message = "角色名只能是中文字符")
-    @Column(nullable = false)
     private String name;
     @Length(max = 100, message = "对角色描述的长度不超过 100 个中文字符")
     private String description;
@@ -39,8 +36,7 @@ public class Role extends BaseEntity {
             inverseJoinColumns = @JoinColumn(name = "menu_id"))
     private Set<Menu> menus;
 
-    public Role(String title, String name, String description) {
-        this.title = title;
+    public Role(String name, String description) {
         this.name = name;
         this.description = description;
     }

+ 1 - 1
manager/src/main/java/cn/reghao/devops/manager/account/model/po/User.java

@@ -59,7 +59,7 @@ public class User extends BaseEntity implements UserDetails {
         this.enabled = true;
         this.locked = false;
         this.screenName = username;
-        this.gender = 2;
+        this.gender = 3;
         this.avatarUrl = "/imgs/avatar.jpg";
     }
 

+ 1 - 3
manager/src/main/java/cn/reghao/devops/manager/account/model/vo/RoleVO.java

@@ -13,7 +13,6 @@ import java.util.Locale;
 @Data
 public class RoleVO {
     private Integer roleId;
-    private String title;
     private String name;
     private String description;
     private String createTime;
@@ -21,8 +20,7 @@ public class RoleVO {
 
     public RoleVO(Role role) {
         this.roleId = role.getId();
-        this.title = role.getTitle().split("ROLE_")[1].toLowerCase(Locale.ROOT);
-        this.name = role.getName();
+        this.name = role.getName().split("ROLE_")[1].toLowerCase(Locale.ROOT);
         this.description = role.getDescription();
         this.createTime = DateTimeConverter.format(role.getCreateTime());
         this.updateTime = DateTimeConverter.format(role.getUpdateTime());

+ 3 - 2
manager/src/main/java/cn/reghao/devops/manager/account/service/impl/AccountServiceImpl.java

@@ -51,7 +51,7 @@ public class AccountServiceImpl implements AccountService {
             username = "admin";
             String password = RandomString.getString(10);
 
-            Role role = roleRepository.findByTitle(RoleType.ROLE_ADMIN.name());
+            Role role = roleRepository.findByName(RoleType.ROLE_ADMIN.name());
             if (role != null) {
                 int roleId = role.getId();
                 CreateAccountDto createAccountDto = new CreateAccountDto(username, password, roleId);
@@ -95,6 +95,7 @@ public class AccountServiceImpl implements AccountService {
 
         String salt = RandomString.getSalt(64);
         String encodedPassword = cryptor.encrypt(newPassword + salt);
+        userEntity.setSalt(salt);
         userEntity.setEncodedPassword(encodedPassword);
         userRepository.save(userEntity);
     }
@@ -120,7 +121,7 @@ public class AccountServiceImpl implements AccountService {
             return;
         }
 
-        Set<String> roles = accountRole.getRoles().stream().map(Role::getTitle).collect(Collectors.toSet());
+        Set<String> roles = accountRole.getRoles().stream().map(Role::getName).collect(Collectors.toSet());
         userEntity.setRole(roles);
         userRepository.save(userEntity);
     }

+ 4 - 4
manager/src/main/java/cn/reghao/devops/manager/account/service/impl/RoleServiceImpl.java

@@ -35,13 +35,13 @@ public class RoleServiceImpl implements RoleService {
         if (roleList.isEmpty()) {
             roleList = new ArrayList<>();
             for (RoleType roleType : RoleType.values()) {
-                roleList.add(new Role(roleType.name(), roleType.getName(), roleType.getDesc()));
+                roleList.add(new Role(roleType.name(), roleType.getDesc()));
             }
             roleRepository.saveAll(roleList);
 
             List<Menu> menus = menuRepository.findAll();
             if (!menus.isEmpty()) {
-                Role role = roleRepository.findByTitle(RoleType.ROLE_ADMIN.name());
+                Role role = roleRepository.findByName(RoleType.ROLE_ADMIN.name());
                 role.setMenus(new HashSet<>(menus));
                 roleRepository.save(role);
             }
@@ -50,8 +50,8 @@ public class RoleServiceImpl implements RoleService {
 
     @Override
     public void addOrModify(Role role) {
-        String title = String.format("ROLE_%s", role.getTitle());
-        role.setTitle(title.toUpperCase(Locale.ROOT));
+        String title = String.format("ROLE_%s", role.getName());
+        role.setName(title.toUpperCase(Locale.ROOT));
         roleRepository.save(role);
     }
 

+ 2 - 2
manager/src/main/java/cn/reghao/devops/manager/home/service/HomeService.java

@@ -28,8 +28,8 @@ public class HomeService {
      */
     public List<Menu> userMenus(Set<String> roles) {
         List<Menu> menus = new ArrayList<>();
-        roles.forEach(roleTitle -> {
-            Role role = roleQuery.findByTitle(roleTitle);
+        roles.forEach(name -> {
+            Role role = roleQuery.findByName(name);
             menus.addAll(role.getMenus());
         });
 

+ 1 - 0
manager/src/main/java/cn/reghao/devops/manager/util/UserContext.java

@@ -12,6 +12,7 @@ import java.util.Set;
  * @author reghao
  * @date 2023-12-01 10:31:52
  */
+@Deprecated
 public class UserContext {
     public static String getUsername() {
         User user = getUser();

+ 1 - 1
manager/src/main/resources/application-dev.yml

@@ -1,5 +1,5 @@
 spring:
   datasource:
-    url: jdbc:mysql://localhost/reghao_devops_rdb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
+    url: jdbc:mysql://localhost/reghao_atest_rdb?useSSL=false&useUnicode=true&characterEncoding=UTF-8&serverTimezone=GMT%2b8
     username: dev
     password: Dev@123456

+ 3 - 9
manager/src/main/resources/templates/rbac/role/add.html

@@ -10,21 +10,15 @@
             <label class="layui-form-label required">角色</label>
             <div class="layui-input-inline">
                 <span th:if="${role} != null">
-                    <input class="layui-input" type="text" name="title"  readonly="true" th:value="${role?.title}">
+                    <input class="layui-input" type="text" name="name" readonly th:value="${role?.name}">
                 </span>
                 <span th:if="${role} == null">
-                    <input class="layui-input" type="text" name="title"  placeholder="请输入角色(只能是小写英文字符)" th:value="${role?.title}">
+                    <input class="layui-input" type="text" name="name"  placeholder="请输入角色(只能是小写英文字符)" th:value="${role?.name}">
                 </span>
             </div>
         </div>
-        <div class="layui-form-item">
-            <label class="layui-form-label required">角色名</label>
-            <div class="layui-input-inline">
-                <input class="layui-input" type="text" name="name"  placeholder="请输入角色名(只能是中文字符)" th:value="${role?.name}">
-            </div>
-        </div>
         <div class="layui-form-item layui-form-text">
-            <label class="layui-form-label">描述</label>
+            <label class="layui-form-label required">描述</label>
             <div class="layui-input-block">
                 <textarea placeholder="请输入内容" class="layui-textarea" name="description">[[${role?.description}]]</textarea>
             </div>

+ 2 - 2
manager/src/main/resources/templates/rbac/role/detail.html

@@ -10,8 +10,8 @@
             <tr>
                 <th width='100px'>角色 ID</th>
                 <td th:text="${role.roleId}"></td>
-                <th width='100px'>角色和角色名</th>
-                <td>[[${role.title}]]([[${role.name}]]</td>
+                <th width='100px'>角色</th>
+                <td>[[${role.name}]]</td>
             </tr>
             <tr>
                 <th width='100px'>角色描述</th>

+ 3 - 5
manager/src/main/resources/templates/rbac/role/index.html

@@ -35,8 +35,7 @@
             <table class="layui-table timo-table">
                 <thead>
                 <tr>
-                    <th data-field="title">角色</th>
-                    <th data-field="name">角色名</th>
+                    <th data-field="name">角色</th>
                     <th data-field="description">描述</th>
                     <th data-field="createTime">创建时间</th>
                     <th>拥有角色的用户</th>
@@ -46,8 +45,7 @@
                 </thead>
                 <tbody>
                 <tr th:each="item:${list}">
-                    <td th:text="${item.title}">角色</td>
-                    <td th:text="${item.name}">角色名</td>
+                    <td th:text="${item.name}">角色</td>
                     <td th:text="${item.description}">描述</td>
                     <td th:text="${item.createTime}">创建时间</td>
                     <td>
@@ -65,7 +63,7 @@
                            data-size="460,357" href="#">编辑</a>
                         <a class="open-popup" data-title="详细信息" th:attr="data-url=@{'/rbac/role/detail/'+${item.roleId}}"
                            data-size="800,600" href="#">详细</a>
-                        <a class="ajax-delete" th:attr="data-msg='确定要删除 '+ ${item.title} + '?'"
+                        <a class="ajax-delete" th:attr="data-msg='确定要删除 '+ ${item.name} + '?'"
                            th:href="@{'/api/rbac/role/' + ${item.roleId}}">删除</a>
                     </td>
                 </tr>

+ 1 - 0
manager/src/main/resources/templates/rbac/user/userinfo.html

@@ -43,6 +43,7 @@
             <div class="layui-input-inline">
                 <input type="radio" name="gender" value="1" title="男" checked><div class="layui-unselect layui-form-radio layui-form-radioed"><i class="layui-anim layui-icon"></i><div>男</div></div>
                 <input type="radio" name="gender" value="2" title="女" th:checked="${user.gender} eq 2"><div class="layui-unselect layui-form-radio"><i class="layui-anim layui-icon"></i><div>女</div></div>
+                <input type="radio" name="gender" value="3" title="未知" th:checked="${user.gender} eq 3"><div class="layui-unselect layui-form-radio"><i class="layui-anim layui-icon"></i><div>未知</div></div>
             </div>
         </div>
         <div class="layui-form-item timo-finally">