You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@seatunnel.apache.org by ki...@apache.org on 2022/08/29 12:27:11 UTC
[incubator-seatunnel] branch dev updated: [seatunnel-1947][seatunnel-server] add auth for server (#2510)
This is an automated email from the ASF dual-hosted git repository.
kirs pushed a commit to branch dev
in repository https://gitbox.apache.org/repos/asf/incubator-seatunnel.git
The following commit(s) were added to refs/heads/dev by this push:
new 3ba8631f3 [seatunnel-1947][seatunnel-server] add auth for server (#2510)
3ba8631f3 is described below
commit 3ba8631f38fe5a4c962bea34b4fe08f6e22f85a0
Author: luketalent <lu...@qq.com>
AuthorDate: Mon Aug 29 20:27:03 2022 +0800
[seatunnel-1947][seatunnel-server] add auth for server (#2510)
* [seatunnel-1947][seatunnel-server] add auth for server
Co-authored-by: shiliang.lu <sh...@clickzetta.com>
---
.../{UserTypeEnum.java => RoleTypeEnum.java} | 7 +-
.../apache/seatunnel/app/common/UserTypeEnum.java | 1 +
.../seatunnel/app/controller/AuthController.java | 51 +++++++++++++
.../UserTypeEnum.java => dal/dao/IRoleDao.java} | 22 ++----
.../dao/IRoleUserRelationDao.java} | 22 ++----
.../org/apache/seatunnel/app/dal/dao/IUserDao.java | 2 +
.../dao/impl/RoleDaoImpl.java} | 33 ++++----
.../app/dal/dao/impl/RoleUserRelationDaoImpl.java | 50 ++++++++++++
.../seatunnel/app/dal/dao/impl/UserDaoImpl.java | 5 ++
.../UserTypeEnum.java => dal/entity/Role.java} | 37 +++++----
.../entity/RoleUserRelation.java} | 35 +++++----
.../mapper/RoleMapper.java} | 22 ++----
.../mapper/RoleUserRelationMapper.java} | 25 +++---
.../IRoleService.java} | 23 ++----
.../app/service/impl/RoleServiceImpl.java | 88 ++++++++++++++++++++++
.../app/service/impl/UserServiceImpl.java | 11 +++
.../apache/seatunnel/app/dal/mapper/RoleMapper.xml | 39 ++++++++++
.../app/dal/mapper/RoleUserRelationMapper.xml | 43 +++++++++++
.../dolphinscheduler/dto/ProcessDefinitionDto.java | 2 +-
.../dolphinscheduler/impl/JobServiceImpl.java | 4 +-
20 files changed, 387 insertions(+), 135 deletions(-)
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/RoleTypeEnum.java
similarity index 89%
copy from seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
copy to seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/RoleTypeEnum.java
index 1b050c516..cd2566abc 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/RoleTypeEnum.java
@@ -17,14 +17,15 @@
package org.apache.seatunnel.app.common;
-public enum UserTypeEnum {
- NORMAL(0, "normal"),
+public enum RoleTypeEnum {
+ NORMAL(0, "NORMAL_ROLE"),
+ ADMIN(1, "ADMIN_ROLE"),
;
private final int code;
private final String description;
- UserTypeEnum(int code, String description) {
+ RoleTypeEnum(int code, String description) {
this.code = code;
this.description = description;
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
index 1b050c516..b583e6f48 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
@@ -19,6 +19,7 @@ package org.apache.seatunnel.app.common;
public enum UserTypeEnum {
NORMAL(0, "normal"),
+ ADMIN(1, "admin"),
;
private final int code;
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/AuthController.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/AuthController.java
new file mode 100644
index 000000000..3f720be88
--- /dev/null
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/controller/AuthController.java
@@ -0,0 +1,51 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.seatunnel.app.controller;
+
+import org.apache.seatunnel.app.common.Result;
+import org.apache.seatunnel.app.service.IRoleService;
+
+import io.swagger.annotations.ApiImplicitParam;
+import io.swagger.annotations.ApiImplicitParams;
+import io.swagger.annotations.ApiOperation;
+import org.springframework.web.bind.annotation.GetMapping;
+import org.springframework.web.bind.annotation.RequestMapping;
+import org.springframework.web.bind.annotation.RequestParam;
+import org.springframework.web.bind.annotation.RestController;
+
+import javax.annotation.Resource;
+import javax.validation.constraints.NotNull;
+
+@RequestMapping("/api/v1/auth")
+@RestController
+public class AuthController {
+
+ @Resource
+ private IRoleService roleServiceImpl;
+
+ @GetMapping("/userRole")
+ @ApiOperation(value = "check relation between user and role", httpMethod = "GET")
+ @ApiImplicitParams({
+ @ApiImplicitParam(name = "username", value = "user name", dataType = "String"),
+ @ApiImplicitParam(name = "roleName", value = "role name", dataType = "String"),
+ })
+ public Result<Boolean> userRole(@RequestParam("username") @NotNull String username, @RequestParam("roleName") @NotNull String roleName){
+ final boolean b = roleServiceImpl.checkUserRole(username, roleName);
+ return Result.success(b);
+ }
+}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IRoleDao.java
similarity index 66%
copy from seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
copy to seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IRoleDao.java
index 1b050c516..e7552e189 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IRoleDao.java
@@ -15,25 +15,13 @@
* limitations under the License.
*/
-package org.apache.seatunnel.app.common;
+package org.apache.seatunnel.app.dal.dao;
-public enum UserTypeEnum {
- NORMAL(0, "normal"),
- ;
+import org.apache.seatunnel.app.dal.entity.Role;
- private final int code;
- private final String description;
+public interface IRoleDao {
- UserTypeEnum(int code, String description) {
- this.code = code;
- this.description = description;
- }
+ void add(Role role);
- public int getCode() {
- return code;
- }
-
- public String getDescription() {
- return description;
- }
+ Role getByRoleName(String roleName);
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IRoleUserRelationDao.java
similarity index 66%
copy from seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
copy to seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IRoleUserRelationDao.java
index 1b050c516..d5f0da714 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IRoleUserRelationDao.java
@@ -15,25 +15,15 @@
* limitations under the License.
*/
-package org.apache.seatunnel.app.common;
+package org.apache.seatunnel.app.dal.dao;
-public enum UserTypeEnum {
- NORMAL(0, "normal"),
- ;
+import org.apache.seatunnel.app.dal.entity.RoleUserRelation;
- private final int code;
- private final String description;
+public interface IRoleUserRelationDao {
- UserTypeEnum(int code, String description) {
- this.code = code;
- this.description = description;
- }
+ void add(RoleUserRelation roleUserRelation);
- public int getCode() {
- return code;
- }
+ RoleUserRelation getByUserAndRole(Integer userId, Integer roleId);
- public String getDescription() {
- return description;
- }
+ void deleteByUserId(Integer userId);
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IUserDao.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IUserDao.java
index bd08d294c..ebf1d19c0 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IUserDao.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/IUserDao.java
@@ -38,4 +38,6 @@ public interface IUserDao {
PageData<User> list(ListUserDto dto, int pageNo, int pageSize);
User getById(int operatorId);
+
+ User getByName(String user);
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/RoleDaoImpl.java
similarity index 58%
copy from seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
copy to seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/RoleDaoImpl.java
index 1b050c516..ae0b32629 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/RoleDaoImpl.java
@@ -15,25 +15,30 @@
* limitations under the License.
*/
-package org.apache.seatunnel.app.common;
+package org.apache.seatunnel.app.dal.dao.impl;
-public enum UserTypeEnum {
- NORMAL(0, "normal"),
- ;
+import org.apache.seatunnel.app.dal.dao.IRoleDao;
+import org.apache.seatunnel.app.dal.entity.Role;
+import org.apache.seatunnel.app.dal.mapper.RoleMapper;
- private final int code;
- private final String description;
+import org.springframework.stereotype.Repository;
- UserTypeEnum(int code, String description) {
- this.code = code;
- this.description = description;
- }
+import javax.annotation.Resource;
+
+@Repository
+public class RoleDaoImpl implements IRoleDao {
- public int getCode() {
- return code;
+ @Resource
+ private RoleMapper roleMapper;
+
+ @Override
+ public void add(Role role){
+ roleMapper.insert(role);
}
- public String getDescription() {
- return description;
+ @Override
+ public Role getByRoleName(String roleName) {
+ return roleMapper.selectByRole(roleName);
}
+
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/RoleUserRelationDaoImpl.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/RoleUserRelationDaoImpl.java
new file mode 100644
index 000000000..8bc66ddce
--- /dev/null
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/RoleUserRelationDaoImpl.java
@@ -0,0 +1,50 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.seatunnel.app.dal.dao.impl;
+
+import org.apache.seatunnel.app.dal.dao.IRoleUserRelationDao;
+import org.apache.seatunnel.app.dal.entity.RoleUserRelation;
+import org.apache.seatunnel.app.dal.mapper.RoleUserRelationMapper;
+
+import org.springframework.stereotype.Repository;
+
+import javax.annotation.Resource;
+
+@Repository
+public class RoleUserRelationDaoImpl implements IRoleUserRelationDao {
+
+ @Resource
+ private RoleUserRelationMapper roleUserRelationMapper;
+
+ @Override
+ public void add(RoleUserRelation roleUserRelation){
+ roleUserRelationMapper.insert(roleUserRelation);
+ }
+
+ @Override
+ public RoleUserRelation getByUserAndRole(Integer userId, Integer roleId) {
+ final RoleUserRelation roleUserRelation = roleUserRelationMapper.selectByUserIdAndRoleId(userId, roleId);
+ return roleUserRelation;
+ }
+
+ @Override
+ public void deleteByUserId(Integer userId) {
+ roleUserRelationMapper.deleteByUserId(userId);
+ }
+
+}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/UserDaoImpl.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/UserDaoImpl.java
index bb29cda2b..8af3d8e52 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/UserDaoImpl.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/dao/impl/UserDaoImpl.java
@@ -101,4 +101,9 @@ public class UserDaoImpl implements IUserDao {
public User getById(int operatorId) {
return userMapper.selectByPrimaryKey(operatorId);
}
+
+ @Override
+ public User getByName(String user) {
+ return userMapper.selectByName(user);
+ }
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/Role.java
similarity index 65%
copy from seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
copy to seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/Role.java
index 1b050c516..f3e218cf6 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/Role.java
@@ -15,25 +15,30 @@
* limitations under the License.
*/
-package org.apache.seatunnel.app.common;
+package org.apache.seatunnel.app.dal.entity;
-public enum UserTypeEnum {
- NORMAL(0, "normal"),
- ;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
- private final int code;
- private final String description;
+import java.util.Date;
- UserTypeEnum(int code, String description) {
- this.code = code;
- this.description = description;
- }
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class Role {
- public int getCode() {
- return code;
- }
+ private Integer id;
- public String getDescription() {
- return description;
- }
+ private Integer type;
+
+ private String roleName;
+
+ private String description;
+
+ private Date createTime;
+
+ private Date updateTime;
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/RoleUserRelation.java
similarity index 66%
copy from seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
copy to seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/RoleUserRelation.java
index 1b050c516..7eeb44cad 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/entity/RoleUserRelation.java
@@ -15,25 +15,28 @@
* limitations under the License.
*/
-package org.apache.seatunnel.app.common;
+package org.apache.seatunnel.app.dal.entity;
-public enum UserTypeEnum {
- NORMAL(0, "normal"),
- ;
+import lombok.AllArgsConstructor;
+import lombok.Builder;
+import lombok.Data;
+import lombok.NoArgsConstructor;
- private final int code;
- private final String description;
+import java.util.Date;
- UserTypeEnum(int code, String description) {
- this.code = code;
- this.description = description;
- }
+@Data
+@Builder
+@AllArgsConstructor
+@NoArgsConstructor
+public class RoleUserRelation {
- public int getCode() {
- return code;
- }
+ private Integer id;
- public String getDescription() {
- return description;
- }
+ private Integer roleId;
+
+ private Integer userId;
+
+ private Date createTime;
+
+ private Date updateTime;
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/RoleMapper.java
similarity index 66%
copy from seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
copy to seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/RoleMapper.java
index 1b050c516..4e81a45f3 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/RoleMapper.java
@@ -15,25 +15,15 @@
* limitations under the License.
*/
-package org.apache.seatunnel.app.common;
+package org.apache.seatunnel.app.dal.mapper;
-public enum UserTypeEnum {
- NORMAL(0, "normal"),
- ;
+import org.apache.seatunnel.app.dal.entity.Role;
- private final int code;
- private final String description;
+import org.apache.ibatis.annotations.Param;
- UserTypeEnum(int code, String description) {
- this.code = code;
- this.description = description;
- }
+public interface RoleMapper {
- public int getCode() {
- return code;
- }
+ int insert(Role record);
- public String getDescription() {
- return description;
- }
+ Role selectByRole(@Param("roleName") String roleName);
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/RoleUserRelationMapper.java
similarity index 66%
copy from seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
copy to seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/RoleUserRelationMapper.java
index 1b050c516..5ba02dc6a 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/dal/mapper/RoleUserRelationMapper.java
@@ -15,25 +15,18 @@
* limitations under the License.
*/
-package org.apache.seatunnel.app.common;
+package org.apache.seatunnel.app.dal.mapper;
-public enum UserTypeEnum {
- NORMAL(0, "normal"),
- ;
+import org.apache.seatunnel.app.dal.entity.RoleUserRelation;
- private final int code;
- private final String description;
+import org.apache.ibatis.annotations.Param;
- UserTypeEnum(int code, String description) {
- this.code = code;
- this.description = description;
- }
+public interface RoleUserRelationMapper {
- public int getCode() {
- return code;
- }
+ int insert(RoleUserRelation record);
+
+ RoleUserRelation selectByUserIdAndRoleId(@Param("userId")Integer userId, @Param("roleId")Integer roleId);
+
+ void deleteByUserId(@Param("userId")Integer userId);
- public String getDescription() {
- return description;
- }
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/IRoleService.java
similarity index 66%
copy from seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
copy to seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/IRoleService.java
index 1b050c516..3dcf1e321 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/common/UserTypeEnum.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/IRoleService.java
@@ -15,25 +15,12 @@
* limitations under the License.
*/
-package org.apache.seatunnel.app.common;
+package org.apache.seatunnel.app.service;
-public enum UserTypeEnum {
- NORMAL(0, "normal"),
- ;
+public interface IRoleService {
+ boolean addUserToRole(Integer userId, Integer type);
- private final int code;
- private final String description;
+ boolean checkUserRole(String username, String roleName);
- UserTypeEnum(int code, String description) {
- this.code = code;
- this.description = description;
- }
-
- public int getCode() {
- return code;
- }
-
- public String getDescription() {
- return description;
- }
+ void deleteByUserId(Integer id);
}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/RoleServiceImpl.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/RoleServiceImpl.java
new file mode 100644
index 000000000..e0f317163
--- /dev/null
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/RoleServiceImpl.java
@@ -0,0 +1,88 @@
+/*
+ * Licensed to the Apache Software Foundation (ASF) under one or more
+ * contributor license agreements. See the NOTICE file distributed with
+ * this work for additional information regarding copyright ownership.
+ * The ASF licenses this file to You under the Apache License, Version 2.0
+ * (the "License"); you may not use this file except in compliance with
+ * the License. You may obtain a copy of the License at
+ *
+ * http://www.apache.org/licenses/LICENSE-2.0
+ *
+ * Unless required by applicable law or agreed to in writing, software
+ * distributed under the License is distributed on an "AS IS" BASIS,
+ * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ * See the License for the specific language governing permissions and
+ * limitations under the License.
+ */
+
+package org.apache.seatunnel.app.service.impl;
+
+import static org.apache.seatunnel.server.common.SeatunnelErrorEnum.NO_SUCH_USER;
+import static com.google.common.base.Preconditions.checkState;
+
+import org.apache.seatunnel.app.common.RoleTypeEnum;
+import org.apache.seatunnel.app.dal.dao.IRoleDao;
+import org.apache.seatunnel.app.dal.dao.IRoleUserRelationDao;
+import org.apache.seatunnel.app.dal.dao.IUserDao;
+import org.apache.seatunnel.app.dal.entity.Role;
+import org.apache.seatunnel.app.dal.entity.RoleUserRelation;
+import org.apache.seatunnel.app.dal.entity.User;
+import org.apache.seatunnel.app.service.IRoleService;
+
+import lombok.extern.slf4j.Slf4j;
+import org.springframework.stereotype.Service;
+
+import javax.annotation.Resource;
+
+import java.util.Objects;
+
+@Service
+@Slf4j
+public class RoleServiceImpl implements IRoleService {
+
+ @Resource
+ private IRoleDao roleDaoImpl;
+
+ @Resource
+ private IRoleUserRelationDao roleUserRelationDaoImpl;
+
+ @Resource
+ private IUserDao userDaoImpl;
+
+ @Override
+ public boolean addUserToRole(Integer userId, Integer type){
+
+ String roleName = type == RoleTypeEnum.ADMIN.getCode() ? RoleTypeEnum.ADMIN.getDescription() : RoleTypeEnum.NORMAL.getDescription();
+
+ final Role role = roleDaoImpl.getByRoleName(roleName);
+
+ final RoleUserRelation build = RoleUserRelation.builder()
+ .roleId(role.getId())
+ .userId(userId)
+ .build();
+
+ roleUserRelationDaoImpl.add(build);
+ return true;
+ }
+
+ @Override
+ public boolean checkUserRole(String username, String roleName){
+
+ final User user = userDaoImpl.getByName(username);
+
+ checkState(!Objects.isNull(user), NO_SUCH_USER.getTemplate());
+
+ final Role role = roleDaoImpl.getByRoleName(roleName);
+
+ final RoleUserRelation byUserAndRole = roleUserRelationDaoImpl.getByUserAndRole(user.getId(), role.getId());
+
+ return !Objects.isNull(byUserAndRole);
+
+ }
+
+ @Override
+ public void deleteByUserId(Integer userId) {
+ roleUserRelationDaoImpl.deleteByUserId(userId);
+ }
+
+}
diff --git a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/UserServiceImpl.java b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/UserServiceImpl.java
index 94b11c385..db34ce159 100644
--- a/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/UserServiceImpl.java
+++ b/seatunnel-server/seatunnel-app/src/main/java/org/apache/seatunnel/app/service/impl/UserServiceImpl.java
@@ -27,12 +27,14 @@ import org.apache.seatunnel.app.domain.request.user.UserListReq;
import org.apache.seatunnel.app.domain.response.PageInfo;
import org.apache.seatunnel.app.domain.response.user.AddUserRes;
import org.apache.seatunnel.app.domain.response.user.UserSimpleInfoRes;
+import org.apache.seatunnel.app.service.IRoleService;
import org.apache.seatunnel.app.service.IUserService;
import org.apache.seatunnel.app.util.PasswordUtils;
import org.apache.seatunnel.server.common.PageData;
import org.springframework.beans.factory.annotation.Value;
import org.springframework.stereotype.Component;
+import org.springframework.transaction.annotation.Transactional;
import javax.annotation.Resource;
@@ -44,10 +46,14 @@ public class UserServiceImpl implements IUserService {
@Resource
private IUserDao userDaoImpl;
+ @Resource
+ private IRoleService roleServiceImpl;
+
@Value("${user.default.passwordSalt:seatunnel}")
private String defaultSalt;
@Override
+ @Transactional(rollbackFor = Exception.class)
public AddUserRes add(AddUserReq addReq) {
// 1. check duplicate user first
userDaoImpl.checkUserExists(addReq.getUsername());
@@ -65,6 +71,9 @@ public class UserServiceImpl implements IUserService {
final int userId = userDaoImpl.add(dto);
final AddUserRes res = new AddUserRes();
res.setId(userId);
+
+ // 3. add to role
+ roleServiceImpl.addUserToRole(userId, addReq.getType().intValue());
return res;
}
@@ -83,8 +92,10 @@ public class UserServiceImpl implements IUserService {
}
@Override
+ @Transactional(rollbackFor = Exception.class)
public void delete(int id) {
userDaoImpl.delete(id);
+ roleServiceImpl.deleteByUserId(id);
}
@Override
diff --git a/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/RoleMapper.xml b/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/RoleMapper.xml
new file mode 100644
index 000000000..e1c133dbb
--- /dev/null
+++ b/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/RoleMapper.xml
@@ -0,0 +1,39 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.apache.seatunnel.app.dal.mapper.RoleMapper">
+ <resultMap id="BaseResultMap" type="org.apache.seatunnel.app.dal.entity.Role">
+ <id column="id" jdbcType="INTEGER" property="id" />
+ <result column="type" jdbcType="INTEGER" property="type" />
+ <result column="role_name" jdbcType="VARCHAR" property="roleName" />
+ <result column="description" jdbcType="VARCHAR" property="description" />
+ <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+ <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+ </resultMap>
+ <sql id="Base_Column_List">
+ id, `type`, `role_name`, `description`, create_time, update_time
+ </sql>
+ <insert id="insert" keyColumn="id" keyProperty="id" parameterType="org.apache.seatunnel.app.dal.entity.Role" useGeneratedKeys="true">
+ insert into `role` (`type`, `role_name`, `description`)
+ values (#{type,jdbcType=INTEGER}, #{roleName,jdbcType=VARCHAR}, #{description,jdbcType=VARCHAR})
+ </insert>
+ <select id="selectByRole" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List" />
+ from `role`
+ where role_name = #{roleName,jdbcType=VARCHAR}
+ </select>
+</mapper>
diff --git a/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/RoleUserRelationMapper.xml b/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/RoleUserRelationMapper.xml
new file mode 100644
index 000000000..27d5132c4
--- /dev/null
+++ b/seatunnel-server/seatunnel-app/src/main/resources/org/apache/seatunnel/app/dal/mapper/RoleUserRelationMapper.xml
@@ -0,0 +1,43 @@
+<?xml version="1.0" encoding="UTF-8"?>
+<!--
+ Licensed to the Apache Software Foundation (ASF) under one or more
+ contributor license agreements. See the NOTICE file distributed with
+ this work for additional information regarding copyright ownership.
+ The ASF licenses this file to You under the Apache License, Version 2.0
+ (the "License"); you may not use this file except in compliance with
+ the License. You may obtain a copy of the License at
+ http://www.apache.org/licenses/LICENSE-2.0
+ Unless required by applicable law or agreed to in writing, software
+ distributed under the License is distributed on an "AS IS" BASIS,
+ WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+ See the License for the specific language governing permissions and
+ limitations under the License.
+-->
+<!DOCTYPE mapper PUBLIC "-//mybatis.org//DTD Mapper 3.0//EN" "http://mybatis.org/dtd/mybatis-3-mapper.dtd">
+<mapper namespace="org.apache.seatunnel.app.dal.mapper.RoleUserRelationMapper">
+ <resultMap id="BaseResultMap" type="org.apache.seatunnel.app.dal.entity.RoleUserRelation">
+ <id column="id" jdbcType="INTEGER" property="id" />
+ <result column="role_id" jdbcType="INTEGER" property="roleId" />
+ <result column="user_id" jdbcType="INTEGER" property="userId" />
+ <result column="create_time" jdbcType="TIMESTAMP" property="createTime" />
+ <result column="update_time" jdbcType="TIMESTAMP" property="updateTime" />
+ </resultMap>
+ <sql id="Base_Column_List">
+ id, role_id, user_id, create_time, update_time
+ </sql>
+ <insert id="insert" parameterType="org.apache.seatunnel.app.dal.entity.RoleUserRelation">
+ insert into role_user_relation (id, role_id, user_id)
+ values (#{id,jdbcType=INTEGER}, #{roleId,jdbcType=INTEGER}, #{userId,jdbcType=INTEGER})
+ </insert>
+ <select id="selectByUserIdAndRoleId" resultMap="BaseResultMap">
+ select
+ <include refid="Base_Column_List" />
+ from role_user_relation
+ where role_id = #{roleId,jdbcType=INTEGER}
+ and user_id = #{userId,jdbcType=INTEGER}
+ </select>
+ <delete id="deleteByUserId">
+ delete from role_user_relation
+ where user_id = #{userId,jdbcType=INTEGER}
+ </delete>
+</mapper>
diff --git a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/dto/ProcessDefinitionDto.java b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/dto/ProcessDefinitionDto.java
index 68504d432..58be7eb05 100644
--- a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/dto/ProcessDefinitionDto.java
+++ b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/dto/ProcessDefinitionDto.java
@@ -38,7 +38,7 @@ public class ProcessDefinitionDto {
private Date createTime;
@JsonFormat(pattern = DEFAULT_DATETIME_FORMAT)
private Date updateTime;
- private String userName;
+ private String username;
private String projectName;
private String locations;
private String scheduleReleaseState;
diff --git a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/JobServiceImpl.java b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/JobServiceImpl.java
index 5aef2ad82..be898a437 100644
--- a/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/JobServiceImpl.java
+++ b/seatunnel-server/seatunnel-scheduler/seatunnel-scheduler-dolphinscheduler/src/main/java/org/apache/seatunnel/scheduler/dolphinscheduler/impl/JobServiceImpl.java
@@ -116,8 +116,8 @@ public class JobServiceImpl implements IJobService {
.jobStatus(p.getReleaseState())
.createTime(p.getCreateTime())
.updateTime(p.getUpdateTime())
- .creatorName(p.getUserName())
- .menderName(p.getUserName())
+ .creatorName(p.getUsername())
+ .menderName(p.getUsername())
.build())
.collect(Collectors.toList());
return new PageData<>(processPageData.getTotalCount(), data);