diff --git a/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/consts/SQLConst.java b/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/consts/SQLConst.java index 54fe3044..9d73d2cb 100644 --- a/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/consts/SQLConst.java +++ b/chat2db-server/chat2db-plugins/chat2db-postgresql/src/main/java/ai/chat2db/plugin/postgresql/consts/SQLConst.java @@ -16,25 +16,20 @@ public class SQLConst { + "array_to_string" + "(\n" + " array(\n" - + " select ' ' || concat_ws(' ',fieldName, fieldType, fieldLen, indexType, isNullStr, fieldComment" + + " select ' ' || concat_ws(' ',fieldName, fieldType, defaultValue, isNullStr" + " ) as " + "column_line\n" + " from (\n" - + " select a.attname as fieldName,format_type(a.atttypid,a.atttypmod) as fieldType,(case when " - + "atttypmod-4>0 then\n" - + " atttypmod-4 else 0 end) as fieldLen,\n" - + " (case when (select count(*) from pg_constraint where conrelid = a.attrelid and conkey[1]=attnum " - + "and\n" - + " contype='p')>0 then 'PRI'\n" - + " when (select count(*) from pg_constraint where conrelid = a.attrelid and conkey[1]=attnum and " - + "contype='u')>0\n" - + " then 'UNI'\n" - + " when (select count(*) from pg_constraint where conrelid = a.attrelid and conkey[1]=attnum and " - + "contype='f')>0\n" - + " then 'FRI'\n" - + " else '' end) as indexType,\n" - + " (case when a.attnotnull=true then 'not null' else 'null' end) as isNullStr,\n" - + " ' comment ' || col_description(a.attrelid,a.attnum) as fieldComment\n" + + " select a.attname as fieldName,format_type(a.atttypid,a.atttypmod) as fieldType," + + " CASE WHEN \n" + + " (SELECT substring(pg_catalog.pg_get_expr(B.adbin, B.adrelid) for 128)\n" + + " FROM pg_catalog.pg_attrdef B WHERE B.adrelid = A.attrelid AND B.adnum = A.attnum AND A.atthasdef) IS NOT NULL THEN\n" + + " 'DEFAULT '|| (SELECT substring(pg_catalog.pg_get_expr(B.adbin, B.adrelid) for 128)\n" + + " FROM pg_catalog.pg_attrdef B WHERE B.adrelid = A.attrelid AND B.adnum = A.attnum AND A.atthasdef)\n" + + " ELSE\n" + + " ''\n" + + " END as defaultValue," + + " (case when a.attnotnull=true then 'not null' else 'null' end) as isNullStr\n" + " from pg_attribute a where attstattarget=-1 and attrelid = (select c.oid from pg_class c," + "pg_namespace n" + " where\n" @@ -114,13 +109,13 @@ public class SQLConst { + " -- COMMENT COMMENT ON COLUMN sys_activity.id IS '主键';\n" + " tableScript:= tableScript || chr(13)||chr(10) || chr(13)||chr(10) || array_to_string(\n" + " array(\n" - + " SELECT 'COMMENT ON COLUMN' || tablename || '.' || a.attname ||' IS '|| ''''|| d.description " + + " SELECT 'COMMENT ON COLUMN ' || 'namespace.tablename' || '.' || a.attname ||' IS '|| ''''|| d.description " + "||''''\n" + " FROM pg_class c\n" + " JOIN pg_description d ON c.oid=d.objoid\n" + " JOIN pg_attribute a ON c.oid = a.attrelid\n" + " WHERE c.relname=tablename\n" - + " AND a.attnum = d.objsubid),','|| chr(13)||chr(10)) ;\n" + + " AND a.attnum = d.objsubid),';'|| chr(13)||chr(10)) ;\n" + "\n" + " return tableScript;\n" + "\n" diff --git a/chat2db-server/chat2db-server-start/src/main/java/ai/chat2db/server/start/controller/oauth/OauthController.java b/chat2db-server/chat2db-server-start/src/main/java/ai/chat2db/server/start/controller/oauth/OauthController.java index 3d484cfe..64a6219e 100644 --- a/chat2db-server/chat2db-server-start/src/main/java/ai/chat2db/server/start/controller/oauth/OauthController.java +++ b/chat2db-server/chat2db-server-start/src/main/java/ai/chat2db/server/start/controller/oauth/OauthController.java @@ -18,6 +18,7 @@ import cn.dev33.satoken.stp.StpUtil; import cn.dev33.satoken.util.SaTokenConsts; import cn.hutool.crypto.digest.DigestUtil; import lombok.extern.slf4j.Slf4j; +import org.jetbrains.annotations.NotNull; import org.springframework.validation.annotation.Validated; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.PostMapping; @@ -25,6 +26,8 @@ import org.springframework.web.bind.annotation.RequestBody; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; +import java.util.Objects; + /** * 登录授权服务 * @@ -48,7 +51,27 @@ public class OauthController { public DataResult login(@Validated @RequestBody LoginRequest request) { // 查询用户 User user = userService.query(request.getUserName()).getData(); - if (user == null) { + this.validateUser(user); + + // Successfully logged in without modifying the administrator password + if (this.validateAdmin(user)) { + return DataResult.of(doLogin(user)); + } + + if (!DigestUtil.bcryptCheck(request.getPassword(), user.getPassword())) { + throw new BusinessException("oauth.passwordIncorrect"); + } + + return DataResult.of(doLogin(user)); + } + + private boolean validateAdmin(final @NotNull User user) { + return RoleCodeEnum.ADMIN.getDefaultUserId().equals(user.getId()) && RoleCodeEnum.ADMIN.getPassword().equals( + user.getPassword()); + } + + private void validateUser(final User user) { + if (Objects.isNull(user)) { throw new BusinessException("oauth.userNameNotExits"); } if (!ValidStatusEnum.VALID.getCode().equals(user.getStatus())) { @@ -57,16 +80,6 @@ public class OauthController { if (RoleCodeEnum.DESKTOP.getDefaultUserId().equals(user.getId())) { throw new BusinessException("oauth.IllegalUserName"); } - // Successfully logged in without modifying the administrator password - if (RoleCodeEnum.ADMIN.getDefaultUserId().equals(user.getId()) && RoleCodeEnum.ADMIN.getPassword().equals( - user.getPassword())) { - return DataResult.of(doLogin(user)); - } - - if (!DigestUtil.bcryptCheck(request.getPassword(), user.getPassword())) { - throw new BusinessException("oauth.passwordIncorrect"); - } - return DataResult.of(doLogin(user)); } private Object doLogin(User user) { @@ -106,11 +119,7 @@ public class OauthController { } private LoginUser getLoginUser() { - LoginUser loginUser = ContextUtils.queryLoginUser(); - if (loginUser == null) { - return null; - } - return loginUser; + return ContextUtils.queryLoginUser(); } }