diff --git a/.idea/compiler.xml b/.idea/compiler.xml new file mode 100644 index 0000000..7806386 --- /dev/null +++ b/.idea/compiler.xml @@ -0,0 +1,28 @@ + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/encodings.xml b/.idea/encodings.xml new file mode 100644 index 0000000..7cb47f6 --- /dev/null +++ b/.idea/encodings.xml @@ -0,0 +1,22 @@ + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/jarRepositories.xml b/.idea/jarRepositories.xml new file mode 100644 index 0000000..8fb5dc2 --- /dev/null +++ b/.idea/jarRepositories.xml @@ -0,0 +1,50 @@ + + + + + + + + + + + + + + + + + + + + + + + \ No newline at end of file diff --git a/.idea/lingniu-platform.iml b/.idea/lingniu-platform.iml deleted file mode 100644 index d6ebd48..0000000 --- a/.idea/lingniu-platform.iml +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - - - \ No newline at end of file diff --git a/.idea/misc.xml b/.idea/misc.xml index 639900d..ce9541d 100644 --- a/.idea/misc.xml +++ b/.idea/misc.xml @@ -1,6 +1,18 @@ - + + + + + \ No newline at end of file diff --git a/.idea/modules.xml b/.idea/modules.xml deleted file mode 100644 index b5cfd88..0000000 --- a/.idea/modules.xml +++ /dev/null @@ -1,8 +0,0 @@ - - - - - - - - \ No newline at end of file diff --git a/demo/backend/.gitattributes b/demo/backend/demo/.gitattributes similarity index 100% rename from demo/backend/.gitattributes rename to demo/backend/demo/.gitattributes diff --git a/demo/backend/.gitignore b/demo/backend/demo/.gitignore similarity index 100% rename from demo/backend/.gitignore rename to demo/backend/demo/.gitignore diff --git a/demo/backend/pom.xml b/demo/backend/demo/pom.xml similarity index 100% rename from demo/backend/pom.xml rename to demo/backend/demo/pom.xml diff --git a/demo/backend/src/main/java/com/example/demo/DemoApplication.java b/demo/backend/demo/src/main/java/org/lingniu/example/demo/DemoApplication.java similarity index 90% rename from demo/backend/src/main/java/com/example/demo/DemoApplication.java rename to demo/backend/demo/src/main/java/org/lingniu/example/demo/DemoApplication.java index 70629e9..df68dae 100644 --- a/demo/backend/src/main/java/com/example/demo/DemoApplication.java +++ b/demo/backend/demo/src/main/java/org/lingniu/example/demo/DemoApplication.java @@ -1,4 +1,4 @@ -package com.example.demo; +package org.lingniu.example.demo; import org.springframework.boot.SpringApplication; import org.springframework.boot.autoconfigure.SpringBootApplication; diff --git a/demo/backend/src/main/java/com/example/demo/Controller/UserController.java b/demo/backend/demo/src/main/java/org/lingniu/example/demo/controller/DemoController.java similarity index 63% rename from demo/backend/src/main/java/com/example/demo/Controller/UserController.java rename to demo/backend/demo/src/main/java/org/lingniu/example/demo/controller/DemoController.java index 56b0fd0..ddef756 100644 --- a/demo/backend/src/main/java/com/example/demo/Controller/UserController.java +++ b/demo/backend/demo/src/main/java/org/lingniu/example/demo/controller/DemoController.java @@ -1,37 +1,29 @@ -package org.lingniu.sdk.web; +package org.lingniu.example.demo.controller; -import com.alibaba.fastjson2.JSON; import com.fasterxml.jackson.databind.ObjectMapper; import org.lingniu.sdk.model.base.CommonResult; import org.lingniu.sdk.model.user.UserInfo; -import org.lingniu.sdk.utils.HttpClientUtils; -import org.springframework.beans.factory.annotation.Value; import org.springframework.boot.autoconfigure.security.oauth2.client.OAuth2ClientProperties; import org.springframework.security.core.annotation.AuthenticationPrincipal; -import org.springframework.security.oauth2.client.OAuth2AuthorizedClient; -import org.springframework.security.oauth2.client.annotation.RegisteredOAuth2AuthorizedClient; -import org.springframework.security.oauth2.core.OAuth2AccessToken; import org.springframework.web.bind.annotation.GetMapping; import org.springframework.web.bind.annotation.RequestMapping; import org.springframework.web.bind.annotation.RestController; -import java.util.Map; - @RequestMapping("/test") @RestController -public class UserController { +public class DemoController { private final OAuth2ClientProperties oAuth2ClientProperties; private final ObjectMapper objectMapper; - public UserController(OAuth2ClientProperties oAuth2ClientProperties, ObjectMapper objectMapper) { + public DemoController(OAuth2ClientProperties oAuth2ClientProperties, ObjectMapper objectMapper) { this.oAuth2ClientProperties = oAuth2ClientProperties; this.objectMapper = objectMapper; } @GetMapping("/getUserInfo") - @PreAuthorize("@ss.hasPermi('user:info')") public CommonResult getUserInfo(@AuthenticationPrincipal UserInfo userInfo) throws Exception { return CommonResult.success(userInfo); } + } diff --git a/demo/backend/src/main/java/com/example/demo/test.http b/demo/backend/demo/src/main/java/org/lingniu/example/demo/test.http similarity index 98% rename from demo/backend/src/main/java/com/example/demo/test.http rename to demo/backend/demo/src/main/java/org/lingniu/example/demo/test.http index 4a0bfa1..9a78081 100644 --- a/demo/backend/src/main/java/com/example/demo/test.http +++ b/demo/backend/demo/src/main/java/org/lingniu/example/demo/test.http @@ -39,3 +39,9 @@ Accept: application/json POST http://localhost:10001/logout Cookie: app_refresh_token=02237ce2c5d14e8088be3d462b69df99 + + + +http://106.14.217.120/portal-api/authorization/demo + + diff --git a/demo/backend/demo/src/main/java/org/lingniu/example/demo/test2.http b/demo/backend/demo/src/main/java/org/lingniu/example/demo/test2.http new file mode 100644 index 0000000..90fed07 --- /dev/null +++ b/demo/backend/demo/src/main/java/org/lingniu/example/demo/test2.http @@ -0,0 +1,50 @@ +# @no-redirect +GET http://106.14.217.120/portal-api/oauth2/authorization/portal + +### +GET localhost:8080 + +### +POST http://localhost:8000/oauth2/authorize +Content-Type: application/x-www-form-urlencoded +Accept: application/json +Idp: 387cec08371f4ebfb61074d41a94046e +Cookie: idp_refresh_token=7bb21a0dcac94aec99f08ae6a2d6db30 + +response_type=code&client_id=b55c88c20db94790a60a5075&scope=openid%20profile%20perms&state=MK1s_JKXsVowOsaGIGK3UK00yVgjUM-lgV-T7tOZdIQ%3D&redirect_uri=http://localhost:9506/oauth2/callback&nonce=rXdsOr0tczTckUSP_RKZ5ABmP575Z4JrTLOxCQ1nt3U + + +#### +GET http://localhost:8080/login/oauth2/code/portal?code=ua3zRRX2YMHsGmYaY4CGEvtklZbCzNtT5sOjguXzhY68zoKqnA83NlQXtG1dN-X_mv4Sn5MaYERkymxk9EWJzpHA_RB523keRb25jmIt5LgUjWJtwD4gJmQJulPOXFO1&state=MK1s_JKXsVowOsaGIGK3UK00yVgjUM-lgV-T7tOZdIQ%3D + +### +GET http://localhost:10001/idp/routes +#Authorization: 85a9f4d6fef34763b4437830ec331570 +Authorization: Bearer eyJraWQiOiJpZHAiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImF1ZCI6ImI1NWM4OGMyMGRiOTQ3OTBhNjBhNTA3NSIsIm5iZiI6MTc3MDM5MjMwMiwic2NvcGUiOlsib3BlbmlkIiwicHJvZmlsZSIsInBlcm1zIl0sImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIsImV4cCI6MTc3MDQzNTUwMiwiaWF0IjoxNzcwMzkyMzAyLCJqdGkiOiIxMmRjZjZmOS0zMjNhLTRhMmUtYjI4Ni1lNDcyOTFhNjc4YTYifQ.MC2khfn7Q2PeU5NB9BCazj-4oWsS_9VIoRLvVZfRiM4RKyAw6VkBv0bNWNuIcUAzZ7GpfIsGMufjsDiVgj7tBK_MWweasWz7DRDc_QCkFt8RZxK2LjxZAilFmXZOaydUNnlGgBmI6S-xAD5N5ltx8OTEdWHuD7tm7S8ppXlvTCk4QSeNd3UYXyXPkR408HOk5ZWTH4PudGVJN5q5gDUAbM9FyN7NejGuJQ4gmHuur7oDhMEqmBQjiv6OnJZko6GszOcN0-nkRJX-KzXV45uIkEF9BaUhJvC6EhotqioVXLuLznX3yB9iuFGqekpS3uHOYwzZF0CHR6xTHg29hvLOxw +#Cookie: app_refresh_token=ce08d9a6b3064311ac163a7806b811ef + + +### +GET http://localhost:8000/account/getRouters +#Authorization: 85a9f4d6fef34763b4437830ec331570 +Authorization: Bearer eyJraWQiOiJpZHAiLCJhbGciOiJSUzI1NiJ9.eyJzdWIiOiJhZG1pbiIsImF1ZCI6ImI1NWM4OGMyMGRiOTQ3OTBhNjBhNTA3NSIsIm5iZiI6MTc3MDM5MjMwMiwic2NvcGUiOlsib3BlbmlkIiwicHJvZmlsZSIsInBlcm1zIl0sImlzcyI6Imh0dHA6Ly9sb2NhbGhvc3Q6ODAwMCIsImV4cCI6MTc3MDQzNTUwMiwiaWF0IjoxNzcwMzkyMzAyLCJqdGkiOiIxMmRjZjZmOS0zMjNhLTRhMmUtYjI4Ni1lNDcyOTFhNjc4YTYifQ.MC2khfn7Q2PeU5NB9BCazj-4oWsS_9VIoRLvVZfRiM4RKyAw6VkBv0bNWNuIcUAzZ7GpfIsGMufjsDiVgj7tBK_MWweasWz7DRDc_QCkFt8RZxK2LjxZAilFmXZOaydUNnlGgBmI6S-xAD5N5ltx8OTEdWHuD7tm7S8ppXlvTCk4QSeNd3UYXyXPkR408HOk5ZWTH4PudGVJN5q5gDUAbM9FyN7NejGuJQ4gmHuur7oDhMEqmBQjiv6OnJZko6GszOcN0-nkRJX-KzXV45uIkEF9BaUhJvC6EhotqioVXLuLznX3yB9iuFGqekpS3uHOYwzZF0CHR6xTHg29hvLOxw +#Cookie: app_refresh_token=ce08d9a6b3064311ac163a7806b811ef +Accept: application/json + +#### +GET http://localhost:10001/idp/routes +#Authorization: 85a9f4d6fef34763b4437830ec331570 +Authorization: 41deb286d03b42139bc3559cbbcc9995 +#Cookie: app_refresh_token=ce08d9a6b3064311ac163a7806b811ef +Accept: application/json + +### +POST http://localhost:10001/logout +Cookie: app_refresh_token=02237ce2c5d14e8088be3d462b69df99 + + + + + + + diff --git a/demo/backend/src/main/resources/application.yml b/demo/backend/demo/src/main/resources/application-dev.yml similarity index 100% rename from demo/backend/src/main/resources/application.yml rename to demo/backend/demo/src/main/resources/application-dev.yml diff --git a/demo/backend/demo/src/main/resources/application-test.yml b/demo/backend/demo/src/main/resources/application-test.yml new file mode 100644 index 0000000..5df65f8 --- /dev/null +++ b/demo/backend/demo/src/main/resources/application-test.yml @@ -0,0 +1,70 @@ +spring: + application: + name: demo + # redis \u914D\u7F6E + security: + oauth2: + resourceserver: + jwt: + jwk-set-uri: http://127.0.0.1:8082/oauth2/jwks + client: + registration: + demo: + client-id: b55c88c20db94790a60a5075 + client-secret: UqVAS8UiehSFJSR8_CygnYGR5M79LuGuGiDwATtcGqg + client-name: DEMO + authorization-grant-type: authorization_code + redirect-uri: http://106.14.217.120/demo/callback + scope: + - openid + - profile + # 返回权限 + - perms + provider: idp + + provider: + idp: + issuer-uri: http://127.0.0.1:8082 + authorization-uri: http://106.14.217.120/idp-ui/sso + token-uri: http://127.0.0.1:8082/oauth2/token + user-info-uri: http://127.0.0.1:8082/userinfo + jwk-set-uri: http://127.0.0.1:8082/oauth2/jwks + user-name-attribute: sub + data: + redis: + # \u5730\u5740 + host: localhost + # \u7AEF\u53E3\uFF0C\u9ED8\u8BA4\u4E3A6379 + port: 6379 + # \u6570\u636E\u5E93\u7D22\u5F15 + database: 0 + # \u5BC6\u7801 + password: + # \u8FDE\u63A5\u8D85\u65F6\u65F6\u95F4 + timeout: 10s + lettuce: + pool: + # \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5C0F\u7A7A\u95F2\u8FDE\u63A5 + min-idle: 0 + # \u8FDE\u63A5\u6C60\u4E2D\u7684\u6700\u5927\u7A7A\u95F2\u8FDE\u63A5 + max-idle: 8 + # \u8FDE\u63A5\u6C60\u7684\u6700\u5927\u6570\u636E\u5E93\u8FDE\u63A5\u6570 + max-active: 8 + # #\u8FDE\u63A5\u6C60\u6700\u5927\u963B\u585E\u7B49\u5F85\u65F6\u95F4\uFF08\u4F7F\u7528\u8D1F\u503C\u8868\u793A\u6CA1\u6709\u9650\u5236\uFF09 + max-wait: -1ms + + + + + +logging: + level: + root: info + org.springframework.web: debug + org.springframework.security: debug + org.springframework.security.oauth2: debug + + +server: + port: 10001 + diff --git a/demo/backend/demo/src/main/resources/application.yml b/demo/backend/demo/src/main/resources/application.yml new file mode 100644 index 0000000..caf4dfc --- /dev/null +++ b/demo/backend/demo/src/main/resources/application.yml @@ -0,0 +1,3 @@ +spring: + profiles: + active: dev \ No newline at end of file diff --git a/demo/backend/src/test/java/com/example/demo/DemoApplicationTests.java b/demo/backend/demo/src/test/java/org/lingniu/example/demo/DemoApplicationTests.java similarity index 84% rename from demo/backend/src/test/java/com/example/demo/DemoApplicationTests.java rename to demo/backend/demo/src/test/java/org/lingniu/example/demo/DemoApplicationTests.java index eaa9969..8e7b2c0 100644 --- a/demo/backend/src/test/java/com/example/demo/DemoApplicationTests.java +++ b/demo/backend/demo/src/test/java/org/lingniu/example/demo/DemoApplicationTests.java @@ -1,4 +1,4 @@ -package com.example.demo; +package org.lingniu.example.demo; import org.junit.jupiter.api.Test; import org.springframework.boot.test.context.SpringBootTest; diff --git a/demo/backend/mvnw b/demo/backend/mvnw deleted file mode 100644 index bd8896b..0000000 --- a/demo/backend/mvnw +++ /dev/null @@ -1,295 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# 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. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.3.4 -# -# Optional ENV vars -# ----------------- -# JAVA_HOME - location of a JDK home dir, required when download maven via java source -# MVNW_REPOURL - repo url base for downloading maven distribution -# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output -# ---------------------------------------------------------------------------- - -set -euf -[ "${MVNW_VERBOSE-}" != debug ] || set -x - -# OS specific support. -native_path() { printf %s\\n "$1"; } -case "$(uname)" in -CYGWIN* | MINGW*) - [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" - native_path() { cygpath --path --windows "$1"; } - ;; -esac - -# set JAVACMD and JAVACCMD -set_java_home() { - # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched - if [ -n "${JAVA_HOME-}" ]; then - if [ -x "$JAVA_HOME/jre/sh/java" ]; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - JAVACCMD="$JAVA_HOME/jre/sh/javac" - else - JAVACMD="$JAVA_HOME/bin/java" - JAVACCMD="$JAVA_HOME/bin/javac" - - if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then - echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 - echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 - return 1 - fi - fi - else - JAVACMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v java - )" || : - JAVACCMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v javac - )" || : - - if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then - echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 - return 1 - fi - fi -} - -# hash string like Java String::hashCode -hash_string() { - str="${1:-}" h=0 - while [ -n "$str" ]; do - char="${str%"${str#?}"}" - h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) - str="${str#?}" - done - printf %x\\n $h -} - -verbose() { :; } -[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } - -die() { - printf %s\\n "$1" >&2 - exit 1 -} - -trim() { - # MWRAPPER-139: - # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. - # Needed for removing poorly interpreted newline sequences when running in more - # exotic environments such as mingw bash on Windows. - printf "%s" "${1}" | tr -d '[:space:]' -} - -scriptDir="$(dirname "$0")" -scriptName="$(basename "$0")" - -# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties -while IFS="=" read -r key value; do - case "${key-}" in - distributionUrl) distributionUrl=$(trim "${value-}") ;; - distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; - esac -done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties" -[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" - -case "${distributionUrl##*/}" in -maven-mvnd-*bin.*) - MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ - case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in - *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; - :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; - :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; - :Linux*x86_64*) distributionPlatform=linux-amd64 ;; - *) - echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 - distributionPlatform=linux-amd64 - ;; - esac - distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" - ;; -maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; -*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; -esac - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" -distributionUrlName="${distributionUrl##*/}" -distributionUrlNameMain="${distributionUrlName%.*}" -distributionUrlNameMain="${distributionUrlNameMain%-bin}" -MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" -MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" - -exec_maven() { - unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : - exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" -} - -if [ -d "$MAVEN_HOME" ]; then - verbose "found existing MAVEN_HOME at $MAVEN_HOME" - exec_maven "$@" -fi - -case "${distributionUrl-}" in -*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; -*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; -esac - -# prepare tmp dir -if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then - clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } - trap clean HUP INT TERM EXIT -else - die "cannot create temp dir" -fi - -mkdir -p -- "${MAVEN_HOME%/*}" - -# Download and Install Apache Maven -verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -verbose "Downloading from: $distributionUrl" -verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -# select .zip or .tar.gz -if ! command -v unzip >/dev/null; then - distributionUrl="${distributionUrl%.zip}.tar.gz" - distributionUrlName="${distributionUrl##*/}" -fi - -# verbose opt -__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' -[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v - -# normalize http auth -case "${MVNW_PASSWORD:+has-password}" in -'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; -has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; -esac - -if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then - verbose "Found wget ... using wget" - wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" -elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then - verbose "Found curl ... using curl" - curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" -elif set_java_home; then - verbose "Falling back to use Java to download" - javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" - targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" - cat >"$javaSource" <<-END - public class Downloader extends java.net.Authenticator - { - protected java.net.PasswordAuthentication getPasswordAuthentication() - { - return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); - } - public static void main( String[] args ) throws Exception - { - setDefault( new Downloader() ); - java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); - } - } - END - # For Cygwin/MinGW, switch paths to Windows format before running javac and java - verbose " - Compiling Downloader.java ..." - "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" - verbose " - Running Downloader.java ..." - "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" -fi - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -if [ -n "${distributionSha256Sum-}" ]; then - distributionSha256Result=false - if [ "$MVN_CMD" = mvnd.sh ]; then - echo "Checksum validation is not supported for maven-mvnd." >&2 - echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - elif command -v sha256sum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then - distributionSha256Result=true - fi - elif command -v shasum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then - distributionSha256Result=true - fi - else - echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 - echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - fi - if [ $distributionSha256Result = false ]; then - echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 - echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 - exit 1 - fi -fi - -# unzip and move -if command -v unzip >/dev/null; then - unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" -else - tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" -fi - -# Find the actual extracted directory name (handles snapshots where filename != directory name) -actualDistributionDir="" - -# First try the expected directory name (for regular distributions) -if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then - if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then - actualDistributionDir="$distributionUrlNameMain" - fi -fi - -# If not found, search for any directory with the Maven executable (for snapshots) -if [ -z "$actualDistributionDir" ]; then - # enable globbing to iterate over items - set +f - for dir in "$TMP_DOWNLOAD_DIR"/*; do - if [ -d "$dir" ]; then - if [ -f "$dir/bin/$MVN_CMD" ]; then - actualDistributionDir="$(basename "$dir")" - break - fi - fi - done - set -f -fi - -if [ -z "$actualDistributionDir" ]; then - verbose "Contents of $TMP_DOWNLOAD_DIR:" - verbose "$(ls -la "$TMP_DOWNLOAD_DIR")" - die "Could not find Maven distribution directory in extracted archive" -fi - -verbose "Found extracted Maven distribution directory: $actualDistributionDir" -printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url" -mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" - -clean || : -exec_maven "$@" diff --git a/demo/backend/mvnw.cmd b/demo/backend/mvnw.cmd deleted file mode 100644 index 92450f9..0000000 --- a/demo/backend/mvnw.cmd +++ /dev/null @@ -1,189 +0,0 @@ -<# : batch portion -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.3.4 -@REM -@REM Optional ENV vars -@REM MVNW_REPOURL - repo url base for downloading maven distribution -@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output -@REM ---------------------------------------------------------------------------- - -@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) -@SET __MVNW_CMD__= -@SET __MVNW_ERROR__= -@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% -@SET PSModulePath= -@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( - IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) -) -@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% -@SET __MVNW_PSMODULEP_SAVE= -@SET __MVNW_ARG0_NAME__= -@SET MVNW_USERNAME= -@SET MVNW_PASSWORD= -@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*) -@echo Cannot start maven from wrapper >&2 && exit /b 1 -@GOTO :EOF -: end batch / begin powershell #> - -$ErrorActionPreference = "Stop" -if ($env:MVNW_VERBOSE -eq "true") { - $VerbosePreference = "Continue" -} - -# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties -$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl -if (!$distributionUrl) { - Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" -} - -switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { - "maven-mvnd-*" { - $USE_MVND = $true - $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" - $MVN_CMD = "mvnd.cmd" - break - } - default { - $USE_MVND = $false - $MVN_CMD = $script -replace '^mvnw','mvn' - break - } -} - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -if ($env:MVNW_REPOURL) { - $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" } - $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')" -} -$distributionUrlName = $distributionUrl -replace '^.*/','' -$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' - -$MAVEN_M2_PATH = "$HOME/.m2" -if ($env:MAVEN_USER_HOME) { - $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME" -} - -if (-not (Test-Path -Path $MAVEN_M2_PATH)) { - New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null -} - -$MAVEN_WRAPPER_DISTS = $null -if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) { - $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists" -} else { - $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists" -} - -$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain" -$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' -$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" - -if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { - Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" - Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" - exit $? -} - -if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { - Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" -} - -# prepare tmp dir -$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile -$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" -$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null -trap { - if ($TMP_DOWNLOAD_DIR.Exists) { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } - } -} - -New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null - -# Download and Install Apache Maven -Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -Write-Verbose "Downloading from: $distributionUrl" -Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -$webclient = New-Object System.Net.WebClient -if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { - $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) -} -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum -if ($distributionSha256Sum) { - if ($USE_MVND) { - Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." - } - Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash - if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { - Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." - } -} - -# unzip and move -Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null - -# Find the actual extracted directory name (handles snapshots where filename != directory name) -$actualDistributionDir = "" - -# First try the expected directory name (for regular distributions) -$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain" -$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD" -if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) { - $actualDistributionDir = $distributionUrlNameMain -} - -# If not found, search for any directory with the Maven executable (for snapshots) -if (!$actualDistributionDir) { - Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object { - $testPath = Join-Path $_.FullName "bin/$MVN_CMD" - if (Test-Path -Path $testPath -PathType Leaf) { - $actualDistributionDir = $_.Name - } - } -} - -if (!$actualDistributionDir) { - Write-Error "Could not find Maven distribution directory in extracted archive" -} - -Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir" -Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null -try { - Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null -} catch { - if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { - Write-Error "fail to move MAVEN_HOME" - } -} finally { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } -} - -Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/demo/frontend/README.md b/demo/frontend/README.md deleted file mode 100644 index 33895ab..0000000 --- a/demo/frontend/README.md +++ /dev/null @@ -1,5 +0,0 @@ -# Vue 3 + TypeScript + Vite - -This template should help get you started developing with Vue 3 and TypeScript in Vite. The template uses Vue 3 ` + + \ No newline at end of file diff --git a/demo/frontend/src/assets/vue.svg b/demo/frontend/demo/demo-sdk/src/assets/vue.svg similarity index 100% rename from demo/frontend/src/assets/vue.svg rename to demo/frontend/demo/demo-sdk/src/assets/vue.svg diff --git a/demo/frontend/demo/demo-sdk/src/components/EChartsReport.vue b/demo/frontend/demo/demo-sdk/src/components/EChartsReport.vue new file mode 100644 index 0000000..fb23489 --- /dev/null +++ b/demo/frontend/demo/demo-sdk/src/components/EChartsReport.vue @@ -0,0 +1,142 @@ + + + + + \ No newline at end of file diff --git a/demo/frontend/demo/demo-sdk/src/main.ts b/demo/frontend/demo/demo-sdk/src/main.ts new file mode 100644 index 0000000..858098d --- /dev/null +++ b/demo/frontend/demo/demo-sdk/src/main.ts @@ -0,0 +1,37 @@ +import { createApp } from 'vue' +import './style.css' +import App from './App.vue' +import router from './router' +import unifiedLoginSDK from "oauth2-login-sdk"; + +// SDK配置 +const SDK_CONFIG = { + clientId: 'b55c88c20db94790a60a5075', + registrationId: 'demo', + storageType: 'localStorage' as const, + basepath: '/demo-api', + idpLogoutUrl: 'http://106.14.217.120/idp-ui/logout', + homePage: 'http://106.14.217.120/demo/dashboard' +}; + +// 初始化SDK +try { + unifiedLoginSDK.init(SDK_CONFIG); + console.log('✅ SDK初始化成功'); +} catch (error) { + console.error('❌ SDK初始化失败:', error); +} + +// 创建Vue应用 +const app = createApp(App) + +// 注册路由 +app.use(router) + +// 挂载应用 +app.mount('#app') + +// 全局错误处理 +app.config.errorHandler = (err, _instance, info) => { + console.error('Vue错误:', err, info); +}; diff --git a/demo/frontend/demo/demo-sdk/src/router/index.ts b/demo/frontend/demo/demo-sdk/src/router/index.ts new file mode 100644 index 0000000..65a8cbf --- /dev/null +++ b/demo/frontend/demo/demo-sdk/src/router/index.ts @@ -0,0 +1,90 @@ +import { createRouter, createWebHistory } from 'vue-router' +import unifiedLoginSDK from 'oauth2-login-sdk'; + +// 路由配置 +const routes = [ + { + path: '/', + redirect: '/dashboard' + }, + { + path: '/dashboard', + name: 'dashboard', + component: () => import('../views/Dashboard.vue'), + meta: { + requiresAuth: true, + title: '仪表板' + } + }, + { + path: '/profile', + name: 'profile', + component: () => import('../views/Profile.vue'), + meta: { + requiresAuth: true, + title: '个人中心' + } + }, + { + path: '/oauth2/callback', + name: 'callback', + component: () => import('../views/Callback.vue'), + meta: { + title: '认证回调' + } + } +]; + +const router = createRouter({ + history: createWebHistory(import.meta.env.BASE_URL), + routes +}); + +// 路由守卫 +router.beforeEach(async (to, _from, next) => { + // 设置页面标题 + if (to.meta.title) { + document.title = `${to.meta.title} - 统一登录Demo`; + } + + // 检查是否需要认证 + const requiresAuth = to.matched.some(record => record.meta.requiresAuth); + + if (requiresAuth) { + // 需要认证的路由 + if (!unifiedLoginSDK.isAuthenticated()) { + try { + console.log('🔒 用户未认证,正在跳转到登录页面...'); + await unifiedLoginSDK.login(); + // 登录会重定向到认证服务器,阻止当前路由切换 + next(false); + } catch (error) { + console.error('❌ 登录失败:', error); + next(false); + } + } else { + // 已认证,允许访问 + next(); + } + } else if (unifiedLoginSDK.isCallback()) { + // 处理OAuth2回调 + try { + console.log('🔄 处理OAuth2回调...'); + await unifiedLoginSDK.handleCallback(); + // 回调处理完成后SDK会自动跳转到homePage + } catch (error) { + console.error('❌ 回调处理失败:', error); + next('/'); + } + } else { + // 公开路由 + next(); + } +}); + +// 路由后置守卫 +router.afterEach((to, from) => { + console.log(`🧭 路由切换: ${from.path} -> ${to.path}`); +}); + +export default router \ No newline at end of file diff --git a/demo/frontend/src/style.css b/demo/frontend/demo/demo-sdk/src/style.css similarity index 100% rename from demo/frontend/src/style.css rename to demo/frontend/demo/demo-sdk/src/style.css diff --git a/demo/frontend/demo/demo-sdk/src/views/Callback.vue b/demo/frontend/demo/demo-sdk/src/views/Callback.vue new file mode 100644 index 0000000..96ace64 --- /dev/null +++ b/demo/frontend/demo/demo-sdk/src/views/Callback.vue @@ -0,0 +1,111 @@ + + + + + \ No newline at end of file diff --git a/demo/frontend/demo/demo-sdk/src/views/Dashboard.vue b/demo/frontend/demo/demo-sdk/src/views/Dashboard.vue new file mode 100644 index 0000000..116b2e4 --- /dev/null +++ b/demo/frontend/demo/demo-sdk/src/views/Dashboard.vue @@ -0,0 +1,581 @@ + + + + + \ No newline at end of file diff --git a/demo/frontend/demo/demo-sdk/src/views/Profile.vue b/demo/frontend/demo/demo-sdk/src/views/Profile.vue new file mode 100644 index 0000000..53ec448 --- /dev/null +++ b/demo/frontend/demo/demo-sdk/src/views/Profile.vue @@ -0,0 +1,487 @@ + + + + + \ No newline at end of file diff --git a/demo/frontend/tsconfig.app.json b/demo/frontend/demo/demo-sdk/tsconfig.app.json similarity index 100% rename from demo/frontend/tsconfig.app.json rename to demo/frontend/demo/demo-sdk/tsconfig.app.json diff --git a/demo/frontend/tsconfig.json b/demo/frontend/demo/demo-sdk/tsconfig.json similarity index 100% rename from demo/frontend/tsconfig.json rename to demo/frontend/demo/demo-sdk/tsconfig.json diff --git a/demo/frontend/tsconfig.node.json b/demo/frontend/demo/demo-sdk/tsconfig.node.json similarity index 100% rename from demo/frontend/tsconfig.node.json rename to demo/frontend/demo/demo-sdk/tsconfig.node.json diff --git a/demo/frontend/vite.config.ts b/demo/frontend/demo/demo-sdk/vite.config.ts similarity index 90% rename from demo/frontend/vite.config.ts rename to demo/frontend/demo/demo-sdk/vite.config.ts index 81e0f7e..26731b0 100644 --- a/demo/frontend/vite.config.ts +++ b/demo/frontend/demo/demo-sdk/vite.config.ts @@ -58,9 +58,8 @@ export default defineConfig(({ mode }) => { rollupOptions: { output: { manualChunks: { - vue: ['vue', 'vue-router', 'vuex/pinia'], - vendor: ['axios', 'lodash', 'dayjs'], - ui: ['element-plus', 'ant-design-vue'] // 根据实际使用的 UI 库调整 + vue: ['vue', 'vue-router'], + echarts: ['echarts'] } } } diff --git a/demo/frontend/src/App.vue b/demo/frontend/src/App.vue deleted file mode 100644 index 59b75db..0000000 --- a/demo/frontend/src/App.vue +++ /dev/null @@ -1,9 +0,0 @@ - - - - \ No newline at end of file diff --git a/demo/frontend/src/components/Home.vue b/demo/frontend/src/components/Home.vue deleted file mode 100644 index cb56f8a..0000000 --- a/demo/frontend/src/components/Home.vue +++ /dev/null @@ -1,37 +0,0 @@ - - - \ No newline at end of file diff --git a/demo/frontend/src/main.ts b/demo/frontend/src/main.ts deleted file mode 100644 index cd35530..0000000 --- a/demo/frontend/src/main.ts +++ /dev/null @@ -1,18 +0,0 @@ -import { createApp } from 'vue' -import './style.css' -import App from './App.vue' -import router from './router' -import unifiedLoginSDK from "oauth2-login-sdk"; - -// 初始化配置 -unifiedLoginSDK.init({ - clientId: 'b55c88c20db94790a60a5075', - registrationId: 'demo', - storageType: 'localStorage', - basepath: '/demo-api', - idpLogoutUrl: 'http://localhost/logout', - homePage: 'http://localhost:9506/home' -}); -const app = createApp(App) -app.use(router) -app.mount('#app') diff --git a/demo/frontend/src/router/index.ts b/demo/frontend/src/router/index.ts deleted file mode 100644 index 6e39902..0000000 --- a/demo/frontend/src/router/index.ts +++ /dev/null @@ -1,31 +0,0 @@ -import { createRouter, createWebHistory } from 'vue-router' -import unifiedLoginSDK from 'oauth2-login-sdk'; -const router = createRouter({ - history: createWebHistory(import.meta.env.BASE_URL), - routes: [ - { - path: '/', - name: 'home', - redirect: '/home' - }, - { - path: '/', - name: 'home', - component: () => import('../components/Home.vue') - } - ] -}) -router.beforeEach(async (to, _from, next) => { - debugger - if (!unifiedLoginSDK.isAuthenticated()) { - if (to.path === '/oauth2/callback') { - await unifiedLoginSDK.handleCallback() - }else{ - await unifiedLoginSDK.login() - } - } else { - next() - } -}) - -export default router \ No newline at end of file diff --git a/idp/backend/idp-starter/.gitattributes b/idp/backend/idp-starter/.gitattributes deleted file mode 100644 index 3b41682..0000000 --- a/idp/backend/idp-starter/.gitattributes +++ /dev/null @@ -1,2 +0,0 @@ -/mvnw text eol=lf -*.cmd text eol=crlf diff --git a/idp/backend/idp-starter/mvnw b/idp/backend/idp-starter/mvnw deleted file mode 100644 index bd8896b..0000000 --- a/idp/backend/idp-starter/mvnw +++ /dev/null @@ -1,295 +0,0 @@ -#!/bin/sh -# ---------------------------------------------------------------------------- -# 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. -# ---------------------------------------------------------------------------- - -# ---------------------------------------------------------------------------- -# Apache Maven Wrapper startup batch script, version 3.3.4 -# -# Optional ENV vars -# ----------------- -# JAVA_HOME - location of a JDK home dir, required when download maven via java source -# MVNW_REPOURL - repo url base for downloading maven distribution -# MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -# MVNW_VERBOSE - true: enable verbose log; debug: trace the mvnw script; others: silence the output -# ---------------------------------------------------------------------------- - -set -euf -[ "${MVNW_VERBOSE-}" != debug ] || set -x - -# OS specific support. -native_path() { printf %s\\n "$1"; } -case "$(uname)" in -CYGWIN* | MINGW*) - [ -z "${JAVA_HOME-}" ] || JAVA_HOME="$(cygpath --unix "$JAVA_HOME")" - native_path() { cygpath --path --windows "$1"; } - ;; -esac - -# set JAVACMD and JAVACCMD -set_java_home() { - # For Cygwin and MinGW, ensure paths are in Unix format before anything is touched - if [ -n "${JAVA_HOME-}" ]; then - if [ -x "$JAVA_HOME/jre/sh/java" ]; then - # IBM's JDK on AIX uses strange locations for the executables - JAVACMD="$JAVA_HOME/jre/sh/java" - JAVACCMD="$JAVA_HOME/jre/sh/javac" - else - JAVACMD="$JAVA_HOME/bin/java" - JAVACCMD="$JAVA_HOME/bin/javac" - - if [ ! -x "$JAVACMD" ] || [ ! -x "$JAVACCMD" ]; then - echo "The JAVA_HOME environment variable is not defined correctly, so mvnw cannot run." >&2 - echo "JAVA_HOME is set to \"$JAVA_HOME\", but \"\$JAVA_HOME/bin/java\" or \"\$JAVA_HOME/bin/javac\" does not exist." >&2 - return 1 - fi - fi - else - JAVACMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v java - )" || : - JAVACCMD="$( - 'set' +e - 'unset' -f command 2>/dev/null - 'command' -v javac - )" || : - - if [ ! -x "${JAVACMD-}" ] || [ ! -x "${JAVACCMD-}" ]; then - echo "The java/javac command does not exist in PATH nor is JAVA_HOME set, so mvnw cannot run." >&2 - return 1 - fi - fi -} - -# hash string like Java String::hashCode -hash_string() { - str="${1:-}" h=0 - while [ -n "$str" ]; do - char="${str%"${str#?}"}" - h=$(((h * 31 + $(LC_CTYPE=C printf %d "'$char")) % 4294967296)) - str="${str#?}" - done - printf %x\\n $h -} - -verbose() { :; } -[ "${MVNW_VERBOSE-}" != true ] || verbose() { printf %s\\n "${1-}"; } - -die() { - printf %s\\n "$1" >&2 - exit 1 -} - -trim() { - # MWRAPPER-139: - # Trims trailing and leading whitespace, carriage returns, tabs, and linefeeds. - # Needed for removing poorly interpreted newline sequences when running in more - # exotic environments such as mingw bash on Windows. - printf "%s" "${1}" | tr -d '[:space:]' -} - -scriptDir="$(dirname "$0")" -scriptName="$(basename "$0")" - -# parse distributionUrl and optional distributionSha256Sum, requires .mvn/wrapper/maven-wrapper.properties -while IFS="=" read -r key value; do - case "${key-}" in - distributionUrl) distributionUrl=$(trim "${value-}") ;; - distributionSha256Sum) distributionSha256Sum=$(trim "${value-}") ;; - esac -done <"$scriptDir/.mvn/wrapper/maven-wrapper.properties" -[ -n "${distributionUrl-}" ] || die "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" - -case "${distributionUrl##*/}" in -maven-mvnd-*bin.*) - MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ - case "${PROCESSOR_ARCHITECTURE-}${PROCESSOR_ARCHITEW6432-}:$(uname -a)" in - *AMD64:CYGWIN* | *AMD64:MINGW*) distributionPlatform=windows-amd64 ;; - :Darwin*x86_64) distributionPlatform=darwin-amd64 ;; - :Darwin*arm64) distributionPlatform=darwin-aarch64 ;; - :Linux*x86_64*) distributionPlatform=linux-amd64 ;; - *) - echo "Cannot detect native platform for mvnd on $(uname)-$(uname -m), use pure java version" >&2 - distributionPlatform=linux-amd64 - ;; - esac - distributionUrl="${distributionUrl%-bin.*}-$distributionPlatform.zip" - ;; -maven-mvnd-*) MVN_CMD=mvnd.sh _MVNW_REPO_PATTERN=/maven/mvnd/ ;; -*) MVN_CMD="mvn${scriptName#mvnw}" _MVNW_REPO_PATTERN=/org/apache/maven/ ;; -esac - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -[ -z "${MVNW_REPOURL-}" ] || distributionUrl="$MVNW_REPOURL$_MVNW_REPO_PATTERN${distributionUrl#*"$_MVNW_REPO_PATTERN"}" -distributionUrlName="${distributionUrl##*/}" -distributionUrlNameMain="${distributionUrlName%.*}" -distributionUrlNameMain="${distributionUrlNameMain%-bin}" -MAVEN_USER_HOME="${MAVEN_USER_HOME:-${HOME}/.m2}" -MAVEN_HOME="${MAVEN_USER_HOME}/wrapper/dists/${distributionUrlNameMain-}/$(hash_string "$distributionUrl")" - -exec_maven() { - unset MVNW_VERBOSE MVNW_USERNAME MVNW_PASSWORD MVNW_REPOURL || : - exec "$MAVEN_HOME/bin/$MVN_CMD" "$@" || die "cannot exec $MAVEN_HOME/bin/$MVN_CMD" -} - -if [ -d "$MAVEN_HOME" ]; then - verbose "found existing MAVEN_HOME at $MAVEN_HOME" - exec_maven "$@" -fi - -case "${distributionUrl-}" in -*?-bin.zip | *?maven-mvnd-?*-?*.zip) ;; -*) die "distributionUrl is not valid, must match *-bin.zip or maven-mvnd-*.zip, but found '${distributionUrl-}'" ;; -esac - -# prepare tmp dir -if TMP_DOWNLOAD_DIR="$(mktemp -d)" && [ -d "$TMP_DOWNLOAD_DIR" ]; then - clean() { rm -rf -- "$TMP_DOWNLOAD_DIR"; } - trap clean HUP INT TERM EXIT -else - die "cannot create temp dir" -fi - -mkdir -p -- "${MAVEN_HOME%/*}" - -# Download and Install Apache Maven -verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -verbose "Downloading from: $distributionUrl" -verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -# select .zip or .tar.gz -if ! command -v unzip >/dev/null; then - distributionUrl="${distributionUrl%.zip}.tar.gz" - distributionUrlName="${distributionUrl##*/}" -fi - -# verbose opt -__MVNW_QUIET_WGET=--quiet __MVNW_QUIET_CURL=--silent __MVNW_QUIET_UNZIP=-q __MVNW_QUIET_TAR='' -[ "${MVNW_VERBOSE-}" != true ] || __MVNW_QUIET_WGET='' __MVNW_QUIET_CURL='' __MVNW_QUIET_UNZIP='' __MVNW_QUIET_TAR=v - -# normalize http auth -case "${MVNW_PASSWORD:+has-password}" in -'') MVNW_USERNAME='' MVNW_PASSWORD='' ;; -has-password) [ -n "${MVNW_USERNAME-}" ] || MVNW_USERNAME='' MVNW_PASSWORD='' ;; -esac - -if [ -z "${MVNW_USERNAME-}" ] && command -v wget >/dev/null; then - verbose "Found wget ... using wget" - wget ${__MVNW_QUIET_WGET:+"$__MVNW_QUIET_WGET"} "$distributionUrl" -O "$TMP_DOWNLOAD_DIR/$distributionUrlName" || die "wget: Failed to fetch $distributionUrl" -elif [ -z "${MVNW_USERNAME-}" ] && command -v curl >/dev/null; then - verbose "Found curl ... using curl" - curl ${__MVNW_QUIET_CURL:+"$__MVNW_QUIET_CURL"} -f -L -o "$TMP_DOWNLOAD_DIR/$distributionUrlName" "$distributionUrl" || die "curl: Failed to fetch $distributionUrl" -elif set_java_home; then - verbose "Falling back to use Java to download" - javaSource="$TMP_DOWNLOAD_DIR/Downloader.java" - targetZip="$TMP_DOWNLOAD_DIR/$distributionUrlName" - cat >"$javaSource" <<-END - public class Downloader extends java.net.Authenticator - { - protected java.net.PasswordAuthentication getPasswordAuthentication() - { - return new java.net.PasswordAuthentication( System.getenv( "MVNW_USERNAME" ), System.getenv( "MVNW_PASSWORD" ).toCharArray() ); - } - public static void main( String[] args ) throws Exception - { - setDefault( new Downloader() ); - java.nio.file.Files.copy( java.net.URI.create( args[0] ).toURL().openStream(), java.nio.file.Paths.get( args[1] ).toAbsolutePath().normalize() ); - } - } - END - # For Cygwin/MinGW, switch paths to Windows format before running javac and java - verbose " - Compiling Downloader.java ..." - "$(native_path "$JAVACCMD")" "$(native_path "$javaSource")" || die "Failed to compile Downloader.java" - verbose " - Running Downloader.java ..." - "$(native_path "$JAVACMD")" -cp "$(native_path "$TMP_DOWNLOAD_DIR")" Downloader "$distributionUrl" "$(native_path "$targetZip")" -fi - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -if [ -n "${distributionSha256Sum-}" ]; then - distributionSha256Result=false - if [ "$MVN_CMD" = mvnd.sh ]; then - echo "Checksum validation is not supported for maven-mvnd." >&2 - echo "Please disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - elif command -v sha256sum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | sha256sum -c - >/dev/null 2>&1; then - distributionSha256Result=true - fi - elif command -v shasum >/dev/null; then - if echo "$distributionSha256Sum $TMP_DOWNLOAD_DIR/$distributionUrlName" | shasum -a 256 -c >/dev/null 2>&1; then - distributionSha256Result=true - fi - else - echo "Checksum validation was requested but neither 'sha256sum' or 'shasum' are available." >&2 - echo "Please install either command, or disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." >&2 - exit 1 - fi - if [ $distributionSha256Result = false ]; then - echo "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised." >&2 - echo "If you updated your Maven version, you need to update the specified distributionSha256Sum property." >&2 - exit 1 - fi -fi - -# unzip and move -if command -v unzip >/dev/null; then - unzip ${__MVNW_QUIET_UNZIP:+"$__MVNW_QUIET_UNZIP"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -d "$TMP_DOWNLOAD_DIR" || die "failed to unzip" -else - tar xzf${__MVNW_QUIET_TAR:+"$__MVNW_QUIET_TAR"} "$TMP_DOWNLOAD_DIR/$distributionUrlName" -C "$TMP_DOWNLOAD_DIR" || die "failed to untar" -fi - -# Find the actual extracted directory name (handles snapshots where filename != directory name) -actualDistributionDir="" - -# First try the expected directory name (for regular distributions) -if [ -d "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain" ]; then - if [ -f "$TMP_DOWNLOAD_DIR/$distributionUrlNameMain/bin/$MVN_CMD" ]; then - actualDistributionDir="$distributionUrlNameMain" - fi -fi - -# If not found, search for any directory with the Maven executable (for snapshots) -if [ -z "$actualDistributionDir" ]; then - # enable globbing to iterate over items - set +f - for dir in "$TMP_DOWNLOAD_DIR"/*; do - if [ -d "$dir" ]; then - if [ -f "$dir/bin/$MVN_CMD" ]; then - actualDistributionDir="$(basename "$dir")" - break - fi - fi - done - set -f -fi - -if [ -z "$actualDistributionDir" ]; then - verbose "Contents of $TMP_DOWNLOAD_DIR:" - verbose "$(ls -la "$TMP_DOWNLOAD_DIR")" - die "Could not find Maven distribution directory in extracted archive" -fi - -verbose "Found extracted Maven distribution directory: $actualDistributionDir" -printf %s\\n "$distributionUrl" >"$TMP_DOWNLOAD_DIR/$actualDistributionDir/mvnw.url" -mv -- "$TMP_DOWNLOAD_DIR/$actualDistributionDir" "$MAVEN_HOME" || [ -d "$MAVEN_HOME" ] || die "fail to move MAVEN_HOME" - -clean || : -exec_maven "$@" diff --git a/idp/backend/idp-starter/mvnw.cmd b/idp/backend/idp-starter/mvnw.cmd deleted file mode 100644 index 92450f9..0000000 --- a/idp/backend/idp-starter/mvnw.cmd +++ /dev/null @@ -1,189 +0,0 @@ -<# : batch portion -@REM ---------------------------------------------------------------------------- -@REM Licensed to the Apache Software Foundation (ASF) under one -@REM or more contributor license agreements. See the NOTICE file -@REM distributed with this work for additional information -@REM regarding copyright ownership. The ASF licenses this file -@REM to you under the Apache License, Version 2.0 (the -@REM "License"); you may not use this file except in compliance -@REM with the License. You may obtain a copy of the License at -@REM -@REM http://www.apache.org/licenses/LICENSE-2.0 -@REM -@REM Unless required by applicable law or agreed to in writing, -@REM software distributed under the License is distributed on an -@REM "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY -@REM KIND, either express or implied. See the License for the -@REM specific language governing permissions and limitations -@REM under the License. -@REM ---------------------------------------------------------------------------- - -@REM ---------------------------------------------------------------------------- -@REM Apache Maven Wrapper startup batch script, version 3.3.4 -@REM -@REM Optional ENV vars -@REM MVNW_REPOURL - repo url base for downloading maven distribution -@REM MVNW_USERNAME/MVNW_PASSWORD - user and password for downloading maven -@REM MVNW_VERBOSE - true: enable verbose log; others: silence the output -@REM ---------------------------------------------------------------------------- - -@IF "%__MVNW_ARG0_NAME__%"=="" (SET __MVNW_ARG0_NAME__=%~nx0) -@SET __MVNW_CMD__= -@SET __MVNW_ERROR__= -@SET __MVNW_PSMODULEP_SAVE=%PSModulePath% -@SET PSModulePath= -@FOR /F "usebackq tokens=1* delims==" %%A IN (`powershell -noprofile "& {$scriptDir='%~dp0'; $script='%__MVNW_ARG0_NAME__%'; icm -ScriptBlock ([Scriptblock]::Create((Get-Content -Raw '%~f0'))) -NoNewScope}"`) DO @( - IF "%%A"=="MVN_CMD" (set __MVNW_CMD__=%%B) ELSE IF "%%B"=="" (echo %%A) ELSE (echo %%A=%%B) -) -@SET PSModulePath=%__MVNW_PSMODULEP_SAVE% -@SET __MVNW_PSMODULEP_SAVE= -@SET __MVNW_ARG0_NAME__= -@SET MVNW_USERNAME= -@SET MVNW_PASSWORD= -@IF NOT "%__MVNW_CMD__%"=="" ("%__MVNW_CMD__%" %*) -@echo Cannot start maven from wrapper >&2 && exit /b 1 -@GOTO :EOF -: end batch / begin powershell #> - -$ErrorActionPreference = "Stop" -if ($env:MVNW_VERBOSE -eq "true") { - $VerbosePreference = "Continue" -} - -# calculate distributionUrl, requires .mvn/wrapper/maven-wrapper.properties -$distributionUrl = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionUrl -if (!$distributionUrl) { - Write-Error "cannot read distributionUrl property in $scriptDir/.mvn/wrapper/maven-wrapper.properties" -} - -switch -wildcard -casesensitive ( $($distributionUrl -replace '^.*/','') ) { - "maven-mvnd-*" { - $USE_MVND = $true - $distributionUrl = $distributionUrl -replace '-bin\.[^.]*$',"-windows-amd64.zip" - $MVN_CMD = "mvnd.cmd" - break - } - default { - $USE_MVND = $false - $MVN_CMD = $script -replace '^mvnw','mvn' - break - } -} - -# apply MVNW_REPOURL and calculate MAVEN_HOME -# maven home pattern: ~/.m2/wrapper/dists/{apache-maven-,maven-mvnd--}/ -if ($env:MVNW_REPOURL) { - $MVNW_REPO_PATTERN = if ($USE_MVND -eq $False) { "/org/apache/maven/" } else { "/maven/mvnd/" } - $distributionUrl = "$env:MVNW_REPOURL$MVNW_REPO_PATTERN$($distributionUrl -replace "^.*$MVNW_REPO_PATTERN",'')" -} -$distributionUrlName = $distributionUrl -replace '^.*/','' -$distributionUrlNameMain = $distributionUrlName -replace '\.[^.]*$','' -replace '-bin$','' - -$MAVEN_M2_PATH = "$HOME/.m2" -if ($env:MAVEN_USER_HOME) { - $MAVEN_M2_PATH = "$env:MAVEN_USER_HOME" -} - -if (-not (Test-Path -Path $MAVEN_M2_PATH)) { - New-Item -Path $MAVEN_M2_PATH -ItemType Directory | Out-Null -} - -$MAVEN_WRAPPER_DISTS = $null -if ((Get-Item $MAVEN_M2_PATH).Target[0] -eq $null) { - $MAVEN_WRAPPER_DISTS = "$MAVEN_M2_PATH/wrapper/dists" -} else { - $MAVEN_WRAPPER_DISTS = (Get-Item $MAVEN_M2_PATH).Target[0] + "/wrapper/dists" -} - -$MAVEN_HOME_PARENT = "$MAVEN_WRAPPER_DISTS/$distributionUrlNameMain" -$MAVEN_HOME_NAME = ([System.Security.Cryptography.SHA256]::Create().ComputeHash([byte[]][char[]]$distributionUrl) | ForEach-Object {$_.ToString("x2")}) -join '' -$MAVEN_HOME = "$MAVEN_HOME_PARENT/$MAVEN_HOME_NAME" - -if (Test-Path -Path "$MAVEN_HOME" -PathType Container) { - Write-Verbose "found existing MAVEN_HOME at $MAVEN_HOME" - Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" - exit $? -} - -if (! $distributionUrlNameMain -or ($distributionUrlName -eq $distributionUrlNameMain)) { - Write-Error "distributionUrl is not valid, must end with *-bin.zip, but found $distributionUrl" -} - -# prepare tmp dir -$TMP_DOWNLOAD_DIR_HOLDER = New-TemporaryFile -$TMP_DOWNLOAD_DIR = New-Item -Itemtype Directory -Path "$TMP_DOWNLOAD_DIR_HOLDER.dir" -$TMP_DOWNLOAD_DIR_HOLDER.Delete() | Out-Null -trap { - if ($TMP_DOWNLOAD_DIR.Exists) { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } - } -} - -New-Item -Itemtype Directory -Path "$MAVEN_HOME_PARENT" -Force | Out-Null - -# Download and Install Apache Maven -Write-Verbose "Couldn't find MAVEN_HOME, downloading and installing it ..." -Write-Verbose "Downloading from: $distributionUrl" -Write-Verbose "Downloading to: $TMP_DOWNLOAD_DIR/$distributionUrlName" - -$webclient = New-Object System.Net.WebClient -if ($env:MVNW_USERNAME -and $env:MVNW_PASSWORD) { - $webclient.Credentials = New-Object System.Net.NetworkCredential($env:MVNW_USERNAME, $env:MVNW_PASSWORD) -} -[Net.ServicePointManager]::SecurityProtocol = [Net.SecurityProtocolType]::Tls12 -$webclient.DownloadFile($distributionUrl, "$TMP_DOWNLOAD_DIR/$distributionUrlName") | Out-Null - -# If specified, validate the SHA-256 sum of the Maven distribution zip file -$distributionSha256Sum = (Get-Content -Raw "$scriptDir/.mvn/wrapper/maven-wrapper.properties" | ConvertFrom-StringData).distributionSha256Sum -if ($distributionSha256Sum) { - if ($USE_MVND) { - Write-Error "Checksum validation is not supported for maven-mvnd. `nPlease disable validation by removing 'distributionSha256Sum' from your maven-wrapper.properties." - } - Import-Module $PSHOME\Modules\Microsoft.PowerShell.Utility -Function Get-FileHash - if ((Get-FileHash "$TMP_DOWNLOAD_DIR/$distributionUrlName" -Algorithm SHA256).Hash.ToLower() -ne $distributionSha256Sum) { - Write-Error "Error: Failed to validate Maven distribution SHA-256, your Maven distribution might be compromised. If you updated your Maven version, you need to update the specified distributionSha256Sum property." - } -} - -# unzip and move -Expand-Archive "$TMP_DOWNLOAD_DIR/$distributionUrlName" -DestinationPath "$TMP_DOWNLOAD_DIR" | Out-Null - -# Find the actual extracted directory name (handles snapshots where filename != directory name) -$actualDistributionDir = "" - -# First try the expected directory name (for regular distributions) -$expectedPath = Join-Path "$TMP_DOWNLOAD_DIR" "$distributionUrlNameMain" -$expectedMvnPath = Join-Path "$expectedPath" "bin/$MVN_CMD" -if ((Test-Path -Path $expectedPath -PathType Container) -and (Test-Path -Path $expectedMvnPath -PathType Leaf)) { - $actualDistributionDir = $distributionUrlNameMain -} - -# If not found, search for any directory with the Maven executable (for snapshots) -if (!$actualDistributionDir) { - Get-ChildItem -Path "$TMP_DOWNLOAD_DIR" -Directory | ForEach-Object { - $testPath = Join-Path $_.FullName "bin/$MVN_CMD" - if (Test-Path -Path $testPath -PathType Leaf) { - $actualDistributionDir = $_.Name - } - } -} - -if (!$actualDistributionDir) { - Write-Error "Could not find Maven distribution directory in extracted archive" -} - -Write-Verbose "Found extracted Maven distribution directory: $actualDistributionDir" -Rename-Item -Path "$TMP_DOWNLOAD_DIR/$actualDistributionDir" -NewName $MAVEN_HOME_NAME | Out-Null -try { - Move-Item -Path "$TMP_DOWNLOAD_DIR/$MAVEN_HOME_NAME" -Destination $MAVEN_HOME_PARENT | Out-Null -} catch { - if (! (Test-Path -Path "$MAVEN_HOME" -PathType Container)) { - Write-Error "fail to move MAVEN_HOME" - } -} finally { - try { Remove-Item $TMP_DOWNLOAD_DIR -Recurse -Force | Out-Null } - catch { Write-Warning "Cannot remove $TMP_DOWNLOAD_DIR" } -} - -Write-Output "MVN_CMD=$MAVEN_HOME/bin/$MVN_CMD" diff --git a/idp/backend/idp-starter/pom.xml b/idp/backend/idp-starter/pom.xml index e4c6c9b..4a5004f 100644 --- a/idp/backend/idp-starter/pom.xml +++ b/idp/backend/idp-starter/pom.xml @@ -10,7 +10,7 @@ org.lingniu idp-starter - 0.0.1-SNAPSHOT + 1.0.0-SNAPSHOT idp-starter idp-starter diff --git a/idp/backend/idp-starter/src/main/java/org/lingniu/idp/config/AuthorizationServerConfig.java b/idp/backend/idp-starter/src/main/java/org/lingniu/idp/config/AuthorizationServerConfig.java index 6c13364..2f9da01 100644 --- a/idp/backend/idp-starter/src/main/java/org/lingniu/idp/config/AuthorizationServerConfig.java +++ b/idp/backend/idp-starter/src/main/java/org/lingniu/idp/config/AuthorizationServerConfig.java @@ -142,6 +142,7 @@ public class AuthorizationServerConfig { .scope("read") .scope("write") .build(); + // Save registered client's in db as if in-memory JdbcRegisteredClientRepository registeredClientRepository = new JdbcRegisteredClientRepository(jdbcTemplate); registeredClientRepository.save(client); diff --git a/idp/backend/idp-starter/src/main/java/org/lingniu/idp/config/CaptchaConfig.java b/idp/backend/idp-starter/src/main/java/org/lingniu/idp/config/CaptchaConfig.java index ef25bdf..e9304ec 100644 --- a/idp/backend/idp-starter/src/main/java/org/lingniu/idp/config/CaptchaConfig.java +++ b/idp/backend/idp-starter/src/main/java/org/lingniu/idp/config/CaptchaConfig.java @@ -37,7 +37,7 @@ public class CaptchaConfig // 验证码文本字符长度 默认为5 properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "4"); // 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) - properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier"); + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "DejaVu San,DejaVu Serif,DejaVu Sans Mono,Arial,Courier"); // 图片样式 水纹com.google.code.kaptcha.impl.WaterRipple 鱼眼com.google.code.kaptcha.impl.FishEyeGimpy 阴影com.google.code.kaptcha.impl.ShadowGimpy properties.setProperty(KAPTCHA_OBSCURIFICATOR_IMPL, "com.google.code.kaptcha.impl.ShadowGimpy"); Config config = new Config(properties); @@ -71,7 +71,7 @@ public class CaptchaConfig // 验证码文本字符长度 默认为5 properties.setProperty(KAPTCHA_TEXTPRODUCER_CHAR_LENGTH, "6"); // 验证码文本字体样式 默认为new Font("Arial", 1, fontSize), new Font("Courier", 1, fontSize) - properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "Arial,Courier"); + properties.setProperty(KAPTCHA_TEXTPRODUCER_FONT_NAMES, "DejaVu San,DejaVu Serif,DejaVu Sans Mono,Arial,Courier"); // 验证码噪点颜色 默认为Color.BLACK properties.setProperty(KAPTCHA_NOISE_COLOR, "white"); // 干扰实现类 diff --git a/idp/backend/idp-starter/src/main/java/org/lingniu/idp/controller/login.http b/idp/backend/idp-starter/src/main/java/org/lingniu/idp/controller/login.http index 46dd375..dcb6ed8 100644 --- a/idp/backend/idp-starter/src/main/java/org/lingniu/idp/controller/login.http +++ b/idp/backend/idp-starter/src/main/java/org/lingniu/idp/controller/login.http @@ -21,11 +21,11 @@ Cookie: idp_refresh_token=7bb21a0dcac94aec99f08ae6a2d6db30 client_id=2c6f1d9ff78641c78d72a848&redirect_uri=http%3A%2F%2Flocalhost%3A81%2Fcallback&response_type=code&state=LXcbn1xobq6unvUCz5uwG7PcwtsNdbWg&scope=openid ### @name 一次性授权码登录 -POST http://localhost:8000/oauth2/token +POST http://idp.lingniu.com/oauth2/token Content-Type: application/x-www-form-urlencoded Authorization: Basic MmM2ZjFkOWZmNzg2NDFjNzhkNzJhODQ4OmkxYnBlcjFKdzJnTGVUelVOMW9uaXd1SUNQRFFnTnVRRWNZeFRLSjVpdjA= -grant_type=authorization_code&redirect_uri=http%3A%2F%2Flocalhost%3A81%2Fcallback&code=qmkNPAOk7pKTrTcHecwfSuona-O9Kjs-bbgSthovqSZz-wBhrqh9SUVeVUEN8ct4Gr7V-Dt4xMeupw3gFslSlbxZ8t2UHl74-63rGp7xnDVUGFWAA99TVa8hOnSgABZX&state=LXcbn1xobq6unvUCz5uwG7PcwtsNdbWg +grant_type=authorization_code&redirect_uri=http%3A%2F%2F106.14.217.120%2Fportal-ui%2Fcallback&code=ddaKrgG3dJCEnuRkQifzPFT-6CVPgZiPkc2B-a222jvkKT2lBId8eej9HigCP07EJphe5icFoFs85P98B-_RnCa4YP5dH6nNPazaa8Mja3u1fJ4GLu54JGduDnN_By7K&state=hFH5yAFqSxseGODiUFyCrjYVFJUnUN6GX3J9p7PyTsI%3D #### @@ -46,3 +46,19 @@ Content-Type: application/x-www-form-urlencoded Authorization: Basic MmM2ZjFkOWZmNzg2NDFjNzhkNzJhODQ4OmkxYnBlcjFKdzJnTGVUelVOMW9uaXd1SUNQRFFnTnVRRWNZeFRLSjVpdjA= grant_type=refresh_token&refresh_token=_NfU5Gdy_dANJkbvjJm6cK7PxNSHyQexWMY5KthA8Hs_nOFtPnTVChsHF-dmLjzhDRZk5nHNZWV7XhxyOp5qS-nLjScsrbvVwSmZhb20QpDLaSoUGtF-ZdBawvlceXks + + +### +GET http://idp.lingniu.com/portal-api/oauth2/authorization/portal + + +### +POST http://idp.lingniu.com/idp-api2/oauth2/authorize +Content-Type: application/x-www-form-urlencoded +Accept: application/json +Idp: bc46a1a9e21449a898e0bd978dc5b2fb + +response_type=code&client_id=2c6f1d9ff78641c78d72a848&scope=openid%20profile%20perms&state=Jy8Q9QHmuPIx9QJ3Yj_StD6b1o2pzCv4ccb6XmfnPRs%3D&redirect_uri=http://106.14.217.120/portal-ui/callback&nonce=brzv1fO14EC4sY0LFIUz9UL9W3i4xw8t3tD9tGEGBvM + +### +GET http://idp.lingniu.com/portal-api/login/oauth2/code/portal?code=8bc_NkChuAgey3hCBE6genllT_JEuMhWn7F9vvDQ9QdLdmvHoFMh891fobX8NwdvAB3fusqg6cumOResv-IISyGrOaeTx_0BizfMacNP4hXdOwPSqz1UhvH2sZvfKOVH&state=Jy8Q9QHmuPIx9QJ3Yj_StD6b1o2pzCv4ccb6XmfnPRs%3D \ No newline at end of file diff --git a/idp/backend/idp-starter/src/main/java/org/lingniu/idp/model/vo/AccessTokenInfo.java b/idp/backend/idp-starter/src/main/java/org/lingniu/idp/model/vo/AccessTokenInfo.java index a8d2865..fefe496 100644 --- a/idp/backend/idp-starter/src/main/java/org/lingniu/idp/model/vo/AccessTokenInfo.java +++ b/idp/backend/idp-starter/src/main/java/org/lingniu/idp/model/vo/AccessTokenInfo.java @@ -171,7 +171,7 @@ public class AccessTokenInfo { return null; } - AccessTokenInfo.AccessTokenInfoBuilder builder = AccessTokenInfo.builder(); + AccessTokenInfoBuilder builder = AccessTokenInfo.builder(); builder.userId((String) map.get("userId")); builder.username((String) map.get("username")); diff --git a/idp/backend/idp-starter/src/main/java/org/lingniu/idp/utils/ClientCredentialUtil.java b/idp/backend/idp-starter/src/main/java/org/lingniu/idp/utils/ClientCredentialUtil.java index f195d68..7725718 100644 --- a/idp/backend/idp-starter/src/main/java/org/lingniu/idp/utils/ClientCredentialUtil.java +++ b/idp/backend/idp-starter/src/main/java/org/lingniu/idp/utils/ClientCredentialUtil.java @@ -72,12 +72,12 @@ public class ClientCredentialUtil { * 生成完整的Client凭证 * @return 包含Client ID、原始Secret和加密Secret的Map */ - public static java.util.Map generateClientCredentials() { + public static Map generateClientCredentials() { String clientId = generateClientId(); String rawSecret = generateRandomSecret(32); String encodedSecret = encodeWithBCryptPrefix(rawSecret); - java.util.Map credentials = new java.util.HashMap<>(); + Map credentials = new java.util.HashMap<>(); credentials.put("clientId", clientId); credentials.put("rawSecret", rawSecret); credentials.put("encodedSecret", encodedSecret); diff --git a/idp/backend/idp-starter/src/main/resources/application-local.yml b/idp/backend/idp-starter/src/main/resources/application-dev.yml similarity index 99% rename from idp/backend/idp-starter/src/main/resources/application-local.yml rename to idp/backend/idp-starter/src/main/resources/application-dev.yml index e0da1e8..c799777 100644 --- a/idp/backend/idp-starter/src/main/resources/application-local.yml +++ b/idp/backend/idp-starter/src/main/resources/application-dev.yml @@ -14,7 +14,7 @@ project: # 验证码类型 math 数字计算 char 字符验证 captchaType: math server: - port: 8443 + port: 8082 spring: # 资源信息 diff --git a/idp/backend/idp-starter/src/main/resources/application-test.yml b/idp/backend/idp-starter/src/main/resources/application-test.yml index 24a683f..60a821b 100644 --- a/idp/backend/idp-starter/src/main/resources/application-test.yml +++ b/idp/backend/idp-starter/src/main/resources/application-test.yml @@ -14,7 +14,7 @@ project: # 验证码类型 math 数字计算 char 字符验证 captchaType: math server: - port: 8443 + port: 8082 spring: # 资源信息 messages: diff --git a/idp/backend/idp-starter/src/main/resources/application.yml b/idp/backend/idp-starter/src/main/resources/application.yml index 03c30d3..3d7808a 100644 --- a/idp/backend/idp-starter/src/main/resources/application.yml +++ b/idp/backend/idp-starter/src/main/resources/application.yml @@ -1,3 +1,3 @@ spring: profiles: - active: test + active: dev diff --git a/idp/frontend/.env.development b/idp/frontend/idp/.env.development similarity index 71% rename from idp/frontend/.env.development rename to idp/frontend/idp/.env.development index 46a1dbe..16e9df4 100644 --- a/idp/frontend/.env.development +++ b/idp/frontend/idp/.env.development @@ -4,8 +4,8 @@ VITE_APP_TITLE = IDP统一登录系统 # 开发环境配置 VITE_APP_ENV = 'development' -VITE_APP_BASE_URL=/idp-ui/ +VITE_APP_BASE_URL=/ # 开发环境 -VITE_APP_BASE_API = '/idp-api2' +VITE_APP_BASE_API = '/dev-api' VITE_APP_DEFAULT_PAGE='' diff --git a/idp/frontend/.env.production b/idp/frontend/idp/.env.production similarity index 100% rename from idp/frontend/.env.production rename to idp/frontend/idp/.env.production diff --git a/idp/frontend/.env.staging b/idp/frontend/idp/.env.staging similarity index 100% rename from idp/frontend/.env.staging rename to idp/frontend/idp/.env.staging diff --git a/idp/frontend/README.md b/idp/frontend/idp/README.md similarity index 100% rename from idp/frontend/README.md rename to idp/frontend/idp/README.md diff --git a/idp/frontend/crypto-js.d.ts b/idp/frontend/idp/crypto-js.d.ts similarity index 100% rename from idp/frontend/crypto-js.d.ts rename to idp/frontend/idp/crypto-js.d.ts diff --git a/idp/frontend/index.html b/idp/frontend/idp/index.html similarity index 100% rename from idp/frontend/index.html rename to idp/frontend/idp/index.html diff --git a/idp/frontend/package.json b/idp/frontend/idp/package.json similarity index 100% rename from idp/frontend/package.json rename to idp/frontend/idp/package.json diff --git a/idp/frontend/pnpm-lock.yaml b/idp/frontend/idp/pnpm-lock.yaml similarity index 100% rename from idp/frontend/pnpm-lock.yaml rename to idp/frontend/idp/pnpm-lock.yaml diff --git a/idp/frontend/src/App.vue b/idp/frontend/idp/src/App.vue similarity index 100% rename from idp/frontend/src/App.vue rename to idp/frontend/idp/src/App.vue diff --git a/idp/frontend/src/api/login.ts b/idp/frontend/idp/src/api/login.ts similarity index 100% rename from idp/frontend/src/api/login.ts rename to idp/frontend/idp/src/api/login.ts diff --git a/idp/frontend/src/assets/401_images/401.gif b/idp/frontend/idp/src/assets/401_images/401.gif similarity index 100% rename from idp/frontend/src/assets/401_images/401.gif rename to idp/frontend/idp/src/assets/401_images/401.gif diff --git a/idp/frontend/src/assets/404_images/404.png b/idp/frontend/idp/src/assets/404_images/404.png similarity index 100% rename from idp/frontend/src/assets/404_images/404.png rename to idp/frontend/idp/src/assets/404_images/404.png diff --git a/idp/frontend/src/assets/404_images/404_cloud.png b/idp/frontend/idp/src/assets/404_images/404_cloud.png similarity index 100% rename from idp/frontend/src/assets/404_images/404_cloud.png rename to idp/frontend/idp/src/assets/404_images/404_cloud.png diff --git a/idp/frontend/src/assets/icons/svg/404.svg b/idp/frontend/idp/src/assets/icons/svg/404.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/404.svg rename to idp/frontend/idp/src/assets/icons/svg/404.svg diff --git a/idp/frontend/src/assets/icons/svg/bug.svg b/idp/frontend/idp/src/assets/icons/svg/bug.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/bug.svg rename to idp/frontend/idp/src/assets/icons/svg/bug.svg diff --git a/idp/frontend/src/assets/icons/svg/build.svg b/idp/frontend/idp/src/assets/icons/svg/build.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/build.svg rename to idp/frontend/idp/src/assets/icons/svg/build.svg diff --git a/idp/frontend/src/assets/icons/svg/button.svg b/idp/frontend/idp/src/assets/icons/svg/button.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/button.svg rename to idp/frontend/idp/src/assets/icons/svg/button.svg diff --git a/idp/frontend/src/assets/icons/svg/cascader.svg b/idp/frontend/idp/src/assets/icons/svg/cascader.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/cascader.svg rename to idp/frontend/idp/src/assets/icons/svg/cascader.svg diff --git a/idp/frontend/src/assets/icons/svg/chart.svg b/idp/frontend/idp/src/assets/icons/svg/chart.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/chart.svg rename to idp/frontend/idp/src/assets/icons/svg/chart.svg diff --git a/idp/frontend/src/assets/icons/svg/checkbox.svg b/idp/frontend/idp/src/assets/icons/svg/checkbox.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/checkbox.svg rename to idp/frontend/idp/src/assets/icons/svg/checkbox.svg diff --git a/idp/frontend/src/assets/icons/svg/clipboard.svg b/idp/frontend/idp/src/assets/icons/svg/clipboard.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/clipboard.svg rename to idp/frontend/idp/src/assets/icons/svg/clipboard.svg diff --git a/idp/frontend/src/assets/icons/svg/code.svg b/idp/frontend/idp/src/assets/icons/svg/code.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/code.svg rename to idp/frontend/idp/src/assets/icons/svg/code.svg diff --git a/idp/frontend/src/assets/icons/svg/color.svg b/idp/frontend/idp/src/assets/icons/svg/color.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/color.svg rename to idp/frontend/idp/src/assets/icons/svg/color.svg diff --git a/idp/frontend/src/assets/icons/svg/component.svg b/idp/frontend/idp/src/assets/icons/svg/component.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/component.svg rename to idp/frontend/idp/src/assets/icons/svg/component.svg diff --git a/idp/frontend/src/assets/icons/svg/dashboard.svg b/idp/frontend/idp/src/assets/icons/svg/dashboard.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/dashboard.svg rename to idp/frontend/idp/src/assets/icons/svg/dashboard.svg diff --git a/idp/frontend/src/assets/icons/svg/date-range.svg b/idp/frontend/idp/src/assets/icons/svg/date-range.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/date-range.svg rename to idp/frontend/idp/src/assets/icons/svg/date-range.svg diff --git a/idp/frontend/src/assets/icons/svg/date.svg b/idp/frontend/idp/src/assets/icons/svg/date.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/date.svg rename to idp/frontend/idp/src/assets/icons/svg/date.svg diff --git a/idp/frontend/src/assets/icons/svg/dict.svg b/idp/frontend/idp/src/assets/icons/svg/dict.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/dict.svg rename to idp/frontend/idp/src/assets/icons/svg/dict.svg diff --git a/idp/frontend/src/assets/icons/svg/documentation.svg b/idp/frontend/idp/src/assets/icons/svg/documentation.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/documentation.svg rename to idp/frontend/idp/src/assets/icons/svg/documentation.svg diff --git a/idp/frontend/src/assets/icons/svg/download.svg b/idp/frontend/idp/src/assets/icons/svg/download.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/download.svg rename to idp/frontend/idp/src/assets/icons/svg/download.svg diff --git a/idp/frontend/src/assets/icons/svg/drag.svg b/idp/frontend/idp/src/assets/icons/svg/drag.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/drag.svg rename to idp/frontend/idp/src/assets/icons/svg/drag.svg diff --git a/idp/frontend/src/assets/icons/svg/druid.svg b/idp/frontend/idp/src/assets/icons/svg/druid.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/druid.svg rename to idp/frontend/idp/src/assets/icons/svg/druid.svg diff --git a/idp/frontend/src/assets/icons/svg/edit.svg b/idp/frontend/idp/src/assets/icons/svg/edit.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/edit.svg rename to idp/frontend/idp/src/assets/icons/svg/edit.svg diff --git a/idp/frontend/src/assets/icons/svg/education.svg b/idp/frontend/idp/src/assets/icons/svg/education.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/education.svg rename to idp/frontend/idp/src/assets/icons/svg/education.svg diff --git a/idp/frontend/src/assets/icons/svg/email.svg b/idp/frontend/idp/src/assets/icons/svg/email.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/email.svg rename to idp/frontend/idp/src/assets/icons/svg/email.svg diff --git a/idp/frontend/src/assets/icons/svg/enter.svg b/idp/frontend/idp/src/assets/icons/svg/enter.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/enter.svg rename to idp/frontend/idp/src/assets/icons/svg/enter.svg diff --git a/idp/frontend/src/assets/icons/svg/example.svg b/idp/frontend/idp/src/assets/icons/svg/example.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/example.svg rename to idp/frontend/idp/src/assets/icons/svg/example.svg diff --git a/idp/frontend/src/assets/icons/svg/excel.svg b/idp/frontend/idp/src/assets/icons/svg/excel.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/excel.svg rename to idp/frontend/idp/src/assets/icons/svg/excel.svg diff --git a/idp/frontend/src/assets/icons/svg/exit-fullscreen.svg b/idp/frontend/idp/src/assets/icons/svg/exit-fullscreen.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/exit-fullscreen.svg rename to idp/frontend/idp/src/assets/icons/svg/exit-fullscreen.svg diff --git a/idp/frontend/src/assets/icons/svg/eye-open.svg b/idp/frontend/idp/src/assets/icons/svg/eye-open.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/eye-open.svg rename to idp/frontend/idp/src/assets/icons/svg/eye-open.svg diff --git a/idp/frontend/src/assets/icons/svg/eye.svg b/idp/frontend/idp/src/assets/icons/svg/eye.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/eye.svg rename to idp/frontend/idp/src/assets/icons/svg/eye.svg diff --git a/idp/frontend/src/assets/icons/svg/form.svg b/idp/frontend/idp/src/assets/icons/svg/form.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/form.svg rename to idp/frontend/idp/src/assets/icons/svg/form.svg diff --git a/idp/frontend/src/assets/icons/svg/fullscreen.svg b/idp/frontend/idp/src/assets/icons/svg/fullscreen.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/fullscreen.svg rename to idp/frontend/idp/src/assets/icons/svg/fullscreen.svg diff --git a/idp/frontend/src/assets/icons/svg/github.svg b/idp/frontend/idp/src/assets/icons/svg/github.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/github.svg rename to idp/frontend/idp/src/assets/icons/svg/github.svg diff --git a/idp/frontend/src/assets/icons/svg/guide.svg b/idp/frontend/idp/src/assets/icons/svg/guide.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/guide.svg rename to idp/frontend/idp/src/assets/icons/svg/guide.svg diff --git a/idp/frontend/src/assets/icons/svg/icon.svg b/idp/frontend/idp/src/assets/icons/svg/icon.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/icon.svg rename to idp/frontend/idp/src/assets/icons/svg/icon.svg diff --git a/idp/frontend/src/assets/icons/svg/input.svg b/idp/frontend/idp/src/assets/icons/svg/input.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/input.svg rename to idp/frontend/idp/src/assets/icons/svg/input.svg diff --git a/idp/frontend/src/assets/icons/svg/international.svg b/idp/frontend/idp/src/assets/icons/svg/international.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/international.svg rename to idp/frontend/idp/src/assets/icons/svg/international.svg diff --git a/idp/frontend/src/assets/icons/svg/job.svg b/idp/frontend/idp/src/assets/icons/svg/job.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/job.svg rename to idp/frontend/idp/src/assets/icons/svg/job.svg diff --git a/idp/frontend/src/assets/icons/svg/language.svg b/idp/frontend/idp/src/assets/icons/svg/language.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/language.svg rename to idp/frontend/idp/src/assets/icons/svg/language.svg diff --git a/idp/frontend/src/assets/icons/svg/link.svg b/idp/frontend/idp/src/assets/icons/svg/link.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/link.svg rename to idp/frontend/idp/src/assets/icons/svg/link.svg diff --git a/idp/frontend/src/assets/icons/svg/list.svg b/idp/frontend/idp/src/assets/icons/svg/list.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/list.svg rename to idp/frontend/idp/src/assets/icons/svg/list.svg diff --git a/idp/frontend/src/assets/icons/svg/lock.svg b/idp/frontend/idp/src/assets/icons/svg/lock.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/lock.svg rename to idp/frontend/idp/src/assets/icons/svg/lock.svg diff --git a/idp/frontend/src/assets/icons/svg/log.svg b/idp/frontend/idp/src/assets/icons/svg/log.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/log.svg rename to idp/frontend/idp/src/assets/icons/svg/log.svg diff --git a/idp/frontend/src/assets/icons/svg/logininfor.svg b/idp/frontend/idp/src/assets/icons/svg/logininfor.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/logininfor.svg rename to idp/frontend/idp/src/assets/icons/svg/logininfor.svg diff --git a/idp/frontend/src/assets/icons/svg/message.svg b/idp/frontend/idp/src/assets/icons/svg/message.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/message.svg rename to idp/frontend/idp/src/assets/icons/svg/message.svg diff --git a/idp/frontend/src/assets/icons/svg/money.svg b/idp/frontend/idp/src/assets/icons/svg/money.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/money.svg rename to idp/frontend/idp/src/assets/icons/svg/money.svg diff --git a/idp/frontend/src/assets/icons/svg/monitor.svg b/idp/frontend/idp/src/assets/icons/svg/monitor.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/monitor.svg rename to idp/frontend/idp/src/assets/icons/svg/monitor.svg diff --git a/idp/frontend/src/assets/icons/svg/moon.svg b/idp/frontend/idp/src/assets/icons/svg/moon.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/moon.svg rename to idp/frontend/idp/src/assets/icons/svg/moon.svg diff --git a/idp/frontend/src/assets/icons/svg/more-up.svg b/idp/frontend/idp/src/assets/icons/svg/more-up.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/more-up.svg rename to idp/frontend/idp/src/assets/icons/svg/more-up.svg diff --git a/idp/frontend/src/assets/icons/svg/nested.svg b/idp/frontend/idp/src/assets/icons/svg/nested.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/nested.svg rename to idp/frontend/idp/src/assets/icons/svg/nested.svg diff --git a/idp/frontend/src/assets/icons/svg/number.svg b/idp/frontend/idp/src/assets/icons/svg/number.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/number.svg rename to idp/frontend/idp/src/assets/icons/svg/number.svg diff --git a/idp/frontend/src/assets/icons/svg/online.svg b/idp/frontend/idp/src/assets/icons/svg/online.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/online.svg rename to idp/frontend/idp/src/assets/icons/svg/online.svg diff --git a/idp/frontend/src/assets/icons/svg/password.svg b/idp/frontend/idp/src/assets/icons/svg/password.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/password.svg rename to idp/frontend/idp/src/assets/icons/svg/password.svg diff --git a/idp/frontend/src/assets/icons/svg/pdf.svg b/idp/frontend/idp/src/assets/icons/svg/pdf.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/pdf.svg rename to idp/frontend/idp/src/assets/icons/svg/pdf.svg diff --git a/idp/frontend/src/assets/icons/svg/people.svg b/idp/frontend/idp/src/assets/icons/svg/people.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/people.svg rename to idp/frontend/idp/src/assets/icons/svg/people.svg diff --git a/idp/frontend/src/assets/icons/svg/peoples.svg b/idp/frontend/idp/src/assets/icons/svg/peoples.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/peoples.svg rename to idp/frontend/idp/src/assets/icons/svg/peoples.svg diff --git a/idp/frontend/src/assets/icons/svg/phone.svg b/idp/frontend/idp/src/assets/icons/svg/phone.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/phone.svg rename to idp/frontend/idp/src/assets/icons/svg/phone.svg diff --git a/idp/frontend/src/assets/icons/svg/post.svg b/idp/frontend/idp/src/assets/icons/svg/post.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/post.svg rename to idp/frontend/idp/src/assets/icons/svg/post.svg diff --git a/idp/frontend/src/assets/icons/svg/qq.svg b/idp/frontend/idp/src/assets/icons/svg/qq.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/qq.svg rename to idp/frontend/idp/src/assets/icons/svg/qq.svg diff --git a/idp/frontend/src/assets/icons/svg/question.svg b/idp/frontend/idp/src/assets/icons/svg/question.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/question.svg rename to idp/frontend/idp/src/assets/icons/svg/question.svg diff --git a/idp/frontend/src/assets/icons/svg/radio.svg b/idp/frontend/idp/src/assets/icons/svg/radio.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/radio.svg rename to idp/frontend/idp/src/assets/icons/svg/radio.svg diff --git a/idp/frontend/src/assets/icons/svg/rate.svg b/idp/frontend/idp/src/assets/icons/svg/rate.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/rate.svg rename to idp/frontend/idp/src/assets/icons/svg/rate.svg diff --git a/idp/frontend/src/assets/icons/svg/redis-list.svg b/idp/frontend/idp/src/assets/icons/svg/redis-list.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/redis-list.svg rename to idp/frontend/idp/src/assets/icons/svg/redis-list.svg diff --git a/idp/frontend/src/assets/icons/svg/redis.svg b/idp/frontend/idp/src/assets/icons/svg/redis.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/redis.svg rename to idp/frontend/idp/src/assets/icons/svg/redis.svg diff --git a/idp/frontend/src/assets/icons/svg/row.svg b/idp/frontend/idp/src/assets/icons/svg/row.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/row.svg rename to idp/frontend/idp/src/assets/icons/svg/row.svg diff --git a/idp/frontend/src/assets/icons/svg/search.svg b/idp/frontend/idp/src/assets/icons/svg/search.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/search.svg rename to idp/frontend/idp/src/assets/icons/svg/search.svg diff --git a/idp/frontend/src/assets/icons/svg/select.svg b/idp/frontend/idp/src/assets/icons/svg/select.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/select.svg rename to idp/frontend/idp/src/assets/icons/svg/select.svg diff --git a/idp/frontend/src/assets/icons/svg/server.svg b/idp/frontend/idp/src/assets/icons/svg/server.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/server.svg rename to idp/frontend/idp/src/assets/icons/svg/server.svg diff --git a/idp/frontend/src/assets/icons/svg/shopping.svg b/idp/frontend/idp/src/assets/icons/svg/shopping.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/shopping.svg rename to idp/frontend/idp/src/assets/icons/svg/shopping.svg diff --git a/idp/frontend/src/assets/icons/svg/size.svg b/idp/frontend/idp/src/assets/icons/svg/size.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/size.svg rename to idp/frontend/idp/src/assets/icons/svg/size.svg diff --git a/idp/frontend/src/assets/icons/svg/skill.svg b/idp/frontend/idp/src/assets/icons/svg/skill.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/skill.svg rename to idp/frontend/idp/src/assets/icons/svg/skill.svg diff --git a/idp/frontend/src/assets/icons/svg/slider.svg b/idp/frontend/idp/src/assets/icons/svg/slider.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/slider.svg rename to idp/frontend/idp/src/assets/icons/svg/slider.svg diff --git a/idp/frontend/src/assets/icons/svg/star.svg b/idp/frontend/idp/src/assets/icons/svg/star.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/star.svg rename to idp/frontend/idp/src/assets/icons/svg/star.svg diff --git a/idp/frontend/src/assets/icons/svg/sunny.svg b/idp/frontend/idp/src/assets/icons/svg/sunny.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/sunny.svg rename to idp/frontend/idp/src/assets/icons/svg/sunny.svg diff --git a/idp/frontend/src/assets/icons/svg/swagger.svg b/idp/frontend/idp/src/assets/icons/svg/swagger.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/swagger.svg rename to idp/frontend/idp/src/assets/icons/svg/swagger.svg diff --git a/idp/frontend/src/assets/icons/svg/switch.svg b/idp/frontend/idp/src/assets/icons/svg/switch.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/switch.svg rename to idp/frontend/idp/src/assets/icons/svg/switch.svg diff --git a/idp/frontend/src/assets/icons/svg/system.svg b/idp/frontend/idp/src/assets/icons/svg/system.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/system.svg rename to idp/frontend/idp/src/assets/icons/svg/system.svg diff --git a/idp/frontend/src/assets/icons/svg/tab.svg b/idp/frontend/idp/src/assets/icons/svg/tab.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/tab.svg rename to idp/frontend/idp/src/assets/icons/svg/tab.svg diff --git a/idp/frontend/src/assets/icons/svg/table.svg b/idp/frontend/idp/src/assets/icons/svg/table.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/table.svg rename to idp/frontend/idp/src/assets/icons/svg/table.svg diff --git a/idp/frontend/src/assets/icons/svg/textarea.svg b/idp/frontend/idp/src/assets/icons/svg/textarea.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/textarea.svg rename to idp/frontend/idp/src/assets/icons/svg/textarea.svg diff --git a/idp/frontend/src/assets/icons/svg/theme.svg b/idp/frontend/idp/src/assets/icons/svg/theme.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/theme.svg rename to idp/frontend/idp/src/assets/icons/svg/theme.svg diff --git a/idp/frontend/src/assets/icons/svg/time-range.svg b/idp/frontend/idp/src/assets/icons/svg/time-range.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/time-range.svg rename to idp/frontend/idp/src/assets/icons/svg/time-range.svg diff --git a/idp/frontend/src/assets/icons/svg/time.svg b/idp/frontend/idp/src/assets/icons/svg/time.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/time.svg rename to idp/frontend/idp/src/assets/icons/svg/time.svg diff --git a/idp/frontend/src/assets/icons/svg/tool.svg b/idp/frontend/idp/src/assets/icons/svg/tool.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/tool.svg rename to idp/frontend/idp/src/assets/icons/svg/tool.svg diff --git a/idp/frontend/src/assets/icons/svg/tree-table.svg b/idp/frontend/idp/src/assets/icons/svg/tree-table.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/tree-table.svg rename to idp/frontend/idp/src/assets/icons/svg/tree-table.svg diff --git a/idp/frontend/src/assets/icons/svg/tree.svg b/idp/frontend/idp/src/assets/icons/svg/tree.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/tree.svg rename to idp/frontend/idp/src/assets/icons/svg/tree.svg diff --git a/idp/frontend/src/assets/icons/svg/upload.svg b/idp/frontend/idp/src/assets/icons/svg/upload.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/upload.svg rename to idp/frontend/idp/src/assets/icons/svg/upload.svg diff --git a/idp/frontend/src/assets/icons/svg/user.svg b/idp/frontend/idp/src/assets/icons/svg/user.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/user.svg rename to idp/frontend/idp/src/assets/icons/svg/user.svg diff --git a/idp/frontend/src/assets/icons/svg/validCode.svg b/idp/frontend/idp/src/assets/icons/svg/validCode.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/validCode.svg rename to idp/frontend/idp/src/assets/icons/svg/validCode.svg diff --git a/idp/frontend/src/assets/icons/svg/wechat.svg b/idp/frontend/idp/src/assets/icons/svg/wechat.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/wechat.svg rename to idp/frontend/idp/src/assets/icons/svg/wechat.svg diff --git a/idp/frontend/src/assets/icons/svg/zip.svg b/idp/frontend/idp/src/assets/icons/svg/zip.svg similarity index 100% rename from idp/frontend/src/assets/icons/svg/zip.svg rename to idp/frontend/idp/src/assets/icons/svg/zip.svg diff --git a/idp/frontend/src/assets/images/login.png b/idp/frontend/idp/src/assets/images/login.png similarity index 100% rename from idp/frontend/src/assets/images/login.png rename to idp/frontend/idp/src/assets/images/login.png diff --git a/idp/frontend/src/assets/styles/btn.scss b/idp/frontend/idp/src/assets/styles/btn.scss similarity index 100% rename from idp/frontend/src/assets/styles/btn.scss rename to idp/frontend/idp/src/assets/styles/btn.scss diff --git a/idp/frontend/src/assets/styles/element-ui.scss b/idp/frontend/idp/src/assets/styles/element-ui.scss similarity index 100% rename from idp/frontend/src/assets/styles/element-ui.scss rename to idp/frontend/idp/src/assets/styles/element-ui.scss diff --git a/idp/frontend/src/assets/styles/idp.scss b/idp/frontend/idp/src/assets/styles/idp.scss similarity index 100% rename from idp/frontend/src/assets/styles/idp.scss rename to idp/frontend/idp/src/assets/styles/idp.scss diff --git a/idp/frontend/src/assets/styles/index.scss b/idp/frontend/idp/src/assets/styles/index.scss similarity index 100% rename from idp/frontend/src/assets/styles/index.scss rename to idp/frontend/idp/src/assets/styles/index.scss diff --git a/idp/frontend/src/assets/styles/mixin.scss b/idp/frontend/idp/src/assets/styles/mixin.scss similarity index 100% rename from idp/frontend/src/assets/styles/mixin.scss rename to idp/frontend/idp/src/assets/styles/mixin.scss diff --git a/idp/frontend/src/assets/styles/sidebar.scss b/idp/frontend/idp/src/assets/styles/sidebar.scss similarity index 100% rename from idp/frontend/src/assets/styles/sidebar.scss rename to idp/frontend/idp/src/assets/styles/sidebar.scss diff --git a/idp/frontend/src/assets/styles/transition.scss b/idp/frontend/idp/src/assets/styles/transition.scss similarity index 100% rename from idp/frontend/src/assets/styles/transition.scss rename to idp/frontend/idp/src/assets/styles/transition.scss diff --git a/idp/frontend/src/assets/styles/variables.module.scss b/idp/frontend/idp/src/assets/styles/variables.module.scss similarity index 100% rename from idp/frontend/src/assets/styles/variables.module.scss rename to idp/frontend/idp/src/assets/styles/variables.module.scss diff --git a/idp/frontend/src/components/SvgIcon/index.ts b/idp/frontend/idp/src/components/SvgIcon/index.ts similarity index 100% rename from idp/frontend/src/components/SvgIcon/index.ts rename to idp/frontend/idp/src/components/SvgIcon/index.ts diff --git a/idp/frontend/src/components/SvgIcon/index.vue b/idp/frontend/idp/src/components/SvgIcon/index.vue similarity index 100% rename from idp/frontend/src/components/SvgIcon/index.vue rename to idp/frontend/idp/src/components/SvgIcon/index.vue diff --git a/idp/frontend/src/components/SvgIcon/svgicon.ts b/idp/frontend/idp/src/components/SvgIcon/svgicon.ts similarity index 100% rename from idp/frontend/src/components/SvgIcon/svgicon.ts rename to idp/frontend/idp/src/components/SvgIcon/svgicon.ts diff --git a/idp/frontend/src/main.ts b/idp/frontend/idp/src/main.ts similarity index 100% rename from idp/frontend/src/main.ts rename to idp/frontend/idp/src/main.ts diff --git a/idp/frontend/src/router/index.ts b/idp/frontend/idp/src/router/index.ts similarity index 100% rename from idp/frontend/src/router/index.ts rename to idp/frontend/idp/src/router/index.ts diff --git a/idp/frontend/src/settings.ts b/idp/frontend/idp/src/settings.ts similarity index 100% rename from idp/frontend/src/settings.ts rename to idp/frontend/idp/src/settings.ts diff --git a/idp/frontend/src/stores/auth.ts b/idp/frontend/idp/src/stores/auth.ts similarity index 100% rename from idp/frontend/src/stores/auth.ts rename to idp/frontend/idp/src/stores/auth.ts diff --git a/idp/frontend/src/stores/index.ts b/idp/frontend/idp/src/stores/index.ts similarity index 100% rename from idp/frontend/src/stores/index.ts rename to idp/frontend/idp/src/stores/index.ts diff --git a/idp/frontend/src/stores/user.ts b/idp/frontend/idp/src/stores/user.ts similarity index 100% rename from idp/frontend/src/stores/user.ts rename to idp/frontend/idp/src/stores/user.ts diff --git a/idp/frontend/src/types/crypto-js.d.ts b/idp/frontend/idp/src/types/crypto-js.d.ts similarity index 100% rename from idp/frontend/src/types/crypto-js.d.ts rename to idp/frontend/idp/src/types/crypto-js.d.ts diff --git a/idp/frontend/src/types/index.ts b/idp/frontend/idp/src/types/index.ts similarity index 100% rename from idp/frontend/src/types/index.ts rename to idp/frontend/idp/src/types/index.ts diff --git a/idp/frontend/src/utils/auth.ts b/idp/frontend/idp/src/utils/auth.ts similarity index 100% rename from idp/frontend/src/utils/auth.ts rename to idp/frontend/idp/src/utils/auth.ts diff --git a/idp/frontend/src/utils/cache.ts b/idp/frontend/idp/src/utils/cache.ts similarity index 100% rename from idp/frontend/src/utils/cache.ts rename to idp/frontend/idp/src/utils/cache.ts diff --git a/idp/frontend/src/utils/encryptor.ts b/idp/frontend/idp/src/utils/encryptor.ts similarity index 100% rename from idp/frontend/src/utils/encryptor.ts rename to idp/frontend/idp/src/utils/encryptor.ts diff --git a/idp/frontend/src/utils/errorCode.ts b/idp/frontend/idp/src/utils/errorCode.ts similarity index 100% rename from idp/frontend/src/utils/errorCode.ts rename to idp/frontend/idp/src/utils/errorCode.ts diff --git a/idp/frontend/src/utils/jsencrypt.ts b/idp/frontend/idp/src/utils/jsencrypt.ts similarity index 100% rename from idp/frontend/src/utils/jsencrypt.ts rename to idp/frontend/idp/src/utils/jsencrypt.ts diff --git a/idp/frontend/src/utils/request.ts b/idp/frontend/idp/src/utils/request.ts similarity index 100% rename from idp/frontend/src/utils/request.ts rename to idp/frontend/idp/src/utils/request.ts diff --git a/idp/frontend/src/utils/storage.ts b/idp/frontend/idp/src/utils/storage.ts similarity index 100% rename from idp/frontend/src/utils/storage.ts rename to idp/frontend/idp/src/utils/storage.ts diff --git a/idp/frontend/src/utils/validate.ts b/idp/frontend/idp/src/utils/validate.ts similarity index 100% rename from idp/frontend/src/utils/validate.ts rename to idp/frontend/idp/src/utils/validate.ts diff --git a/idp/frontend/src/views/LoginPage.vue b/idp/frontend/idp/src/views/LoginPage.vue similarity index 100% rename from idp/frontend/src/views/LoginPage.vue rename to idp/frontend/idp/src/views/LoginPage.vue diff --git a/idp/frontend/src/views/login/PasswordLogin.vue b/idp/frontend/idp/src/views/login/PasswordLogin.vue similarity index 100% rename from idp/frontend/src/views/login/PasswordLogin.vue rename to idp/frontend/idp/src/views/login/PasswordLogin.vue diff --git a/idp/frontend/src/views/login/SmsLogin.vue b/idp/frontend/idp/src/views/login/SmsLogin.vue similarity index 100% rename from idp/frontend/src/views/login/SmsLogin.vue rename to idp/frontend/idp/src/views/login/SmsLogin.vue diff --git a/idp/frontend/src/views/login/Sso.vue b/idp/frontend/idp/src/views/login/Sso.vue similarity index 90% rename from idp/frontend/src/views/login/Sso.vue rename to idp/frontend/idp/src/views/login/Sso.vue index 7be72d6..8ef10cd 100644 --- a/idp/frontend/src/views/login/Sso.vue +++ b/idp/frontend/idp/src/views/login/Sso.vue @@ -1,14 +1,6 @@