mirror of
https://gitee.com/xiaonuobase/snowy.git
synced 2026-03-22 10:47:16 +08:00
【更新】基座三方登录完善,增加三方登录是否开启配置,完善字典颜色支持
This commit is contained in:
2
pom.xml
2
pom.xml
@@ -319,7 +319,7 @@
|
|||||||
<dependency>
|
<dependency>
|
||||||
<groupId>me.zhyd.oauth</groupId>
|
<groupId>me.zhyd.oauth</groupId>
|
||||||
<artifactId>JustAuth</artifactId>
|
<artifactId>JustAuth</artifactId>
|
||||||
<version>1.16.6</version>
|
<version>1.16.7</version>
|
||||||
</dependency>
|
</dependency>
|
||||||
|
|
||||||
<!-- beetl模板引擎 -->
|
<!-- beetl模板引擎 -->
|
||||||
|
|||||||
@@ -46,6 +46,10 @@ export default {
|
|||||||
configSysBaseList(data) {
|
configSysBaseList(data) {
|
||||||
return request('sysBaseList', data, 'get')
|
return request('sysBaseList', data, 'get')
|
||||||
},
|
},
|
||||||
|
// 获取系统三方登录开关配置
|
||||||
|
configSysThirdAllowFlagList(data) {
|
||||||
|
return request('sysThirdAllowFlagList', data, 'get')
|
||||||
|
},
|
||||||
// 获取机构树
|
// 获取机构树
|
||||||
configOrgTree(data) {
|
configOrgTree(data) {
|
||||||
return request('orgTree', data, 'get')
|
return request('orgTree', data, 'get')
|
||||||
|
|||||||
|
Before Width: | Height: | Size: 993 KiB After Width: | Height: | Size: 993 KiB |
BIN
snowy-admin-web/src/assets/images/authSource/wechat.png
Normal file
BIN
snowy-admin-web/src/assets/images/authSource/wechat.png
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 908 B |
@@ -2,23 +2,35 @@
|
|||||||
<a-divider>{{ $t('login.signInOther') }}</a-divider>
|
<a-divider>{{ $t('login.signInOther') }}</a-divider>
|
||||||
<div class="login-oauth layout-center">
|
<div class="login-oauth layout-center">
|
||||||
<a-space align="start">
|
<a-space align="start">
|
||||||
<a @click="getLoginRenderUrl('iam')">
|
<a v-if="formData.SNOWY_THIRD_IAM_ALLOW_LOGIN_FLAG" @click="getLoginRenderUrl('IAM')">
|
||||||
<img style="width: 32px; height: 32px;" src="/src/assets/images/snowy-iam.png" alt="" />
|
<img style="width: 32px; height: 32px;" src="/src/assets/images/authSource/iam.png" alt="" />
|
||||||
</a>
|
</a>
|
||||||
<a @click="getLoginRenderUrl('gitee')">
|
<a v-if="formData.SNOWY_THIRD_WECHAT_ALLOW_LOGIN_FLAG" @click="getLoginRenderUrl('WECHAT')">
|
||||||
<GiteeIcon />
|
<img style="width: 32px; height: 32px;" src="/src/assets/images/authSource/wechat.png" alt="" />
|
||||||
</a>
|
|
||||||
<a @click="getLoginRenderUrl('wechat')">
|
|
||||||
<wechat-outlined class="bind-icon" :style="{ color: '#1AAD19' }" />
|
|
||||||
</a>
|
</a>
|
||||||
</a-space>
|
</a-space>
|
||||||
</div>
|
</div>
|
||||||
</template>
|
</template>
|
||||||
|
|
||||||
<script setup name="threeLogin">
|
<script setup name="threeLogin">
|
||||||
|
import configApi from "@/api/dev/configApi";
|
||||||
import thirdApi from '@/api/auth/thirdApi'
|
import thirdApi from '@/api/auth/thirdApi'
|
||||||
import WechatOutlined from "@ant-design/icons-vue/WechatOutlined";
|
const formData = ref({})
|
||||||
|
const getConfigSysThirdAllowFlagList = () => {
|
||||||
|
configApi.configSysThirdAllowFlagList().then((data) => {
|
||||||
|
data.forEach((item) => {
|
||||||
|
formData.value[item.configKey] = transferBooleanInValue(item.configValue)
|
||||||
|
})
|
||||||
|
})
|
||||||
|
}
|
||||||
|
// 转换值
|
||||||
|
const transferBooleanInValue = (value) => {
|
||||||
|
if (value === 'true' || value === 'false') {
|
||||||
|
return value === 'true'
|
||||||
|
} else {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
}
|
||||||
const getLoginRenderUrl = (platform) => {
|
const getLoginRenderUrl = (platform) => {
|
||||||
const param = {
|
const param = {
|
||||||
platform: platform,
|
platform: platform,
|
||||||
@@ -28,6 +40,7 @@
|
|||||||
window.location.href = data.authorizeUrl
|
window.location.href = data.authorizeUrl
|
||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
getConfigSysThirdAllowFlagList();
|
||||||
</script>
|
</script>
|
||||||
<style scoped>
|
<style scoped>
|
||||||
.bind-icon {
|
.bind-icon {
|
||||||
|
|||||||
@@ -1,102 +0,0 @@
|
|||||||
<template>
|
|
||||||
<a-spin :spinning="loadSpinning">
|
|
||||||
<a-form
|
|
||||||
ref="formRef"
|
|
||||||
:model="formData"
|
|
||||||
:rules="formRules"
|
|
||||||
layout="vertical"
|
|
||||||
:label-col="{ ...layout.labelCol, offset: 0 }"
|
|
||||||
:wrapper-col="{ ...layout.wrapperCol, offset: 0 }"
|
|
||||||
>
|
|
||||||
<a-row :gutter="8">
|
|
||||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
||||||
<a-form-item label="GITEE客户端ID:" name="SNOWY_THIRD_GITEE_CLIENT_ID">
|
|
||||||
<a-input v-model:value="formData.SNOWY_THIRD_GITEE_CLIENT_ID" placeholder="请输入GITEE客户端ID" />
|
|
||||||
</a-form-item>
|
|
||||||
</a-col>
|
|
||||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
||||||
<a-form-item label="GITEE客户端SECRET:" name="SNOWY_THIRD_GITEE_CLIENT_SECRET">
|
|
||||||
<a-input v-model:value="formData.SNOWY_THIRD_GITEE_CLIENT_SECRET" placeholder="请输入GITEE客户端SECRET" />
|
|
||||||
</a-form-item>
|
|
||||||
</a-col>
|
|
||||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
||||||
<a-form-item label="重定向URL:" name="SNOWY_THIRD_GITEE_REDIRECT_URL">
|
|
||||||
<a-input v-model:value="formData.SNOWY_THIRD_GITEE_REDIRECT_URL" placeholder="请输入重定向URL" />
|
|
||||||
</a-form-item>
|
|
||||||
</a-col>
|
|
||||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
|
||||||
<a-form-item>
|
|
||||||
<a-space>
|
|
||||||
<a-button type="primary" :loading="submitLoading" @click="onSubmit()">保存</a-button>
|
|
||||||
<a-button @click="() => formRef.resetFields()">重置</a-button>
|
|
||||||
</a-space>
|
|
||||||
</a-form-item>
|
|
||||||
</a-col>
|
|
||||||
</a-row>
|
|
||||||
</a-form>
|
|
||||||
</a-spin>
|
|
||||||
</template>
|
|
||||||
|
|
||||||
<script setup name="giteeThirdForm">
|
|
||||||
import { cloneDeep } from 'lodash-es'
|
|
||||||
import { required } from '@/utils/formRules'
|
|
||||||
import { message } from 'ant-design-vue'
|
|
||||||
import configApi from '@/api/dev/configApi'
|
|
||||||
|
|
||||||
const formRef = ref()
|
|
||||||
const formData = ref({})
|
|
||||||
const submitLoading = ref(false)
|
|
||||||
const loadSpinning = ref(true)
|
|
||||||
|
|
||||||
// 查询此界面的配置项,并转为表单
|
|
||||||
const param = {
|
|
||||||
category: 'THIRD_GITEE'
|
|
||||||
}
|
|
||||||
configApi.configList(param).then((data) => {
|
|
||||||
loadSpinning.value = false
|
|
||||||
if (data) {
|
|
||||||
data.forEach((item) => {
|
|
||||||
formData.value[item.configKey] = item.configValue
|
|
||||||
})
|
|
||||||
} else {
|
|
||||||
message.warning('表单项不存在,请初始化数据库')
|
|
||||||
}
|
|
||||||
})
|
|
||||||
|
|
||||||
// 默认要校验的
|
|
||||||
const formRules = {
|
|
||||||
SNOWY_THIRD_GITEE_CLIENT_ID: [required('请输入GITEE客户端ID')],
|
|
||||||
SNOWY_THIRD_GITEE_CLIENT_SECRET: [required('请输入GITEE客户端SECRET')],
|
|
||||||
SNOWY_THIRD_GITEE_REDIRECT_URL: [required('请输入重定向URL')]
|
|
||||||
}
|
|
||||||
// 验证并提交数据
|
|
||||||
const onSubmit = () => {
|
|
||||||
formRef.value
|
|
||||||
.validate()
|
|
||||||
.then(() => {
|
|
||||||
submitLoading.value = true
|
|
||||||
let submitParam = cloneDeep(formData.value)
|
|
||||||
const param = Object.entries(submitParam).map((item) => {
|
|
||||||
return {
|
|
||||||
configKey: item[0],
|
|
||||||
configValue: item[1]
|
|
||||||
}
|
|
||||||
})
|
|
||||||
configApi
|
|
||||||
.configEditForm(param)
|
|
||||||
.then(() => {})
|
|
||||||
.finally(() => {
|
|
||||||
submitLoading.value = false
|
|
||||||
})
|
|
||||||
})
|
|
||||||
.catch(() => {})
|
|
||||||
}
|
|
||||||
const layout = {
|
|
||||||
labelCol: {
|
|
||||||
span: 24
|
|
||||||
},
|
|
||||||
wrapperCol: {
|
|
||||||
span: 12
|
|
||||||
}
|
|
||||||
}
|
|
||||||
</script>
|
|
||||||
@@ -10,32 +10,42 @@
|
|||||||
>
|
>
|
||||||
<a-row :gutter="8">
|
<a-row :gutter="8">
|
||||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
<a-form-item label="IAM认证地址:" name="SNOWY_THIRD_IAM_AUTHORIZE_URL">
|
<a-form-item label="是否允许IAM登录:" name="SNOWY_THIRD_IAM_ALLOW_LOGIN_FLAG">
|
||||||
|
<a-switch
|
||||||
|
v-model:checked="formData.SNOWY_THIRD_IAM_ALLOW_LOGIN_FLAG"
|
||||||
|
checked-children="是"
|
||||||
|
un-checked-children="否"
|
||||||
|
placeholder="请选择是否允许IAM登录"
|
||||||
|
/>
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
|
<a-form-item label="IAM认证地址:" name="SNOWY_THIRD_IAM_AUTHORIZE_URL" v-if="formData.SNOWY_THIRD_IAM_ALLOW_LOGIN_FLAG">
|
||||||
<a-input v-model:value="formData.SNOWY_THIRD_IAM_AUTHORIZE_URL" placeholder="请输入IAM认证地址" />
|
<a-input v-model:value="formData.SNOWY_THIRD_IAM_AUTHORIZE_URL" placeholder="请输入IAM认证地址" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
<a-form-item label="IAM获取token地址:" name="SNOWY_THIRD_IAM_ACCESS_TOKEN_URL">
|
<a-form-item label="IAM获取token地址:" name="SNOWY_THIRD_IAM_ACCESS_TOKEN_URL" v-if="formData.SNOWY_THIRD_IAM_ALLOW_LOGIN_FLAG">
|
||||||
<a-input v-model:value="formData.SNOWY_THIRD_IAM_ACCESS_TOKEN_URL" placeholder="请输入IAM获取token地址" />
|
<a-input v-model:value="formData.SNOWY_THIRD_IAM_ACCESS_TOKEN_URL" placeholder="请输入IAM获取token地址" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
<a-form-item label="IAM获取用户信息地址:" name="SNOWY_THIRD_IAM_USER_INFO_URL">
|
<a-form-item label="IAM获取用户信息地址:" name="SNOWY_THIRD_IAM_USER_INFO_URL" v-if="formData.SNOWY_THIRD_IAM_ALLOW_LOGIN_FLAG">
|
||||||
<a-input v-model:value="formData.SNOWY_THIRD_IAM_USER_INFO_URL" placeholder="请输入IAM获取用户信息地址" />
|
<a-input v-model:value="formData.SNOWY_THIRD_IAM_USER_INFO_URL" placeholder="请输入IAM获取用户信息地址" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
<a-form-item label="IAM客户端ID:" name="SNOWY_THIRD_IAM_CLIENT_ID">
|
<a-form-item label="IAM客户端ID:" name="SNOWY_THIRD_IAM_CLIENT_ID" v-if="formData.SNOWY_THIRD_IAM_ALLOW_LOGIN_FLAG">
|
||||||
<a-input v-model:value="formData.SNOWY_THIRD_IAM_CLIENT_ID" placeholder="请输入IAM客户端ID" />
|
<a-input v-model:value="formData.SNOWY_THIRD_IAM_CLIENT_ID" placeholder="请输入IAM客户端ID" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
<a-form-item label="IAM客户端SECRET:" name="SNOWY_THIRD_IAM_CLIENT_SECRET">
|
<a-form-item label="IAM客户端SECRET:" name="SNOWY_THIRD_IAM_CLIENT_SECRET" v-if="formData.SNOWY_THIRD_IAM_ALLOW_LOGIN_FLAG">
|
||||||
<a-input v-model:value="formData.SNOWY_THIRD_IAM_CLIENT_SECRET" placeholder="请输入IAM客户端SECRET" />
|
<a-input v-model:value="formData.SNOWY_THIRD_IAM_CLIENT_SECRET" placeholder="请输入IAM客户端SECRET" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
<a-form-item label="重定向URL:" name="SNOWY_THIRD_IAM_REDIRECT_URL">
|
<a-form-item label="重定向URL:" name="SNOWY_THIRD_IAM_REDIRECT_URL" v-if="formData.SNOWY_THIRD_IAM_ALLOW_LOGIN_FLAG">
|
||||||
<a-input v-model:value="formData.SNOWY_THIRD_IAM_REDIRECT_URL" placeholder="请输入重定向URL" />
|
<a-input v-model:value="formData.SNOWY_THIRD_IAM_REDIRECT_URL" placeholder="请输入重定向URL" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
@@ -71,15 +81,23 @@
|
|||||||
loadSpinning.value = false
|
loadSpinning.value = false
|
||||||
if (data) {
|
if (data) {
|
||||||
data.forEach((item) => {
|
data.forEach((item) => {
|
||||||
formData.value[item.configKey] = item.configValue
|
formData.value[item.configKey] = transferBooleanInValue(item.configValue)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
message.warning('表单项不存在,请初始化数据库')
|
message.warning('表单项不存在,请初始化数据库')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
// 转换值
|
||||||
|
const transferBooleanInValue = (value) => {
|
||||||
|
if (value === 'true' || value === 'false') {
|
||||||
|
return value === 'true'
|
||||||
|
} else {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
}
|
||||||
// 默认要校验的
|
// 默认要校验的
|
||||||
const formRules = {
|
const formRules = {
|
||||||
|
SNOWY_THIRD_IAM_ALLOW_LOGIN_FLAG: [required('请选择是否允许IAM登录')],
|
||||||
SNOWY_THIRD_IAM_AUTHORIZE_URL: [required('请输入IAM认证地址')],
|
SNOWY_THIRD_IAM_AUTHORIZE_URL: [required('请输入IAM认证地址')],
|
||||||
SNOWY_THIRD_IAM_ACCESS_TOKEN_URL: [required('请输入IAM获取token地址')],
|
SNOWY_THIRD_IAM_ACCESS_TOKEN_URL: [required('请输入IAM获取token地址')],
|
||||||
SNOWY_THIRD_IAM_USER_INFO_URL: [required('请输入IAM获取用户信息地址')],
|
SNOWY_THIRD_IAM_USER_INFO_URL: [required('请输入IAM获取用户信息地址')],
|
||||||
|
|||||||
@@ -3,9 +3,6 @@
|
|||||||
<a-tab-pane key="iamThird" tab="IAM">
|
<a-tab-pane key="iamThird" tab="IAM">
|
||||||
<iamThirdForm />
|
<iamThirdForm />
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
<a-tab-pane key="giteeThird" tab="GITEE">
|
|
||||||
<giteeThirdForm />
|
|
||||||
</a-tab-pane>
|
|
||||||
<a-tab-pane key="wechatThird" tab="微信">
|
<a-tab-pane key="wechatThird" tab="微信">
|
||||||
<wechatThirdForm />
|
<wechatThirdForm />
|
||||||
</a-tab-pane>
|
</a-tab-pane>
|
||||||
@@ -15,6 +12,5 @@
|
|||||||
<script setup name="thirdConfig">
|
<script setup name="thirdConfig">
|
||||||
import IamThirdForm from './iamThirdForm.vue'
|
import IamThirdForm from './iamThirdForm.vue'
|
||||||
import WechatThirdForm from './wechatThirdForm.vue'
|
import WechatThirdForm from './wechatThirdForm.vue'
|
||||||
import GiteeThirdForm from './giteeThirdForm.vue'
|
|
||||||
const activeKey = ref('iamThird')
|
const activeKey = ref('iamThird')
|
||||||
</script>
|
</script>
|
||||||
|
|||||||
@@ -10,18 +10,28 @@
|
|||||||
>
|
>
|
||||||
<a-row :gutter="8">
|
<a-row :gutter="8">
|
||||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
<a-form-item label="微信客户端ID:" name="SNOWY_THIRD_WECHAT_CLIENT_ID">
|
<a-form-item label="是否允许微信登录:" name="SNOWY_THIRD_WECHAT_ALLOW_LOGIN_FLAG">
|
||||||
<a-input v-model:value="formData.SNOWY_THIRD_WECHAT_CLIENT_ID" placeholder="请输入微信客户端ID" />
|
<a-switch
|
||||||
|
v-model:checked="formData.SNOWY_THIRD_WECHAT_ALLOW_LOGIN_FLAG"
|
||||||
|
checked-children="是"
|
||||||
|
un-checked-children="否"
|
||||||
|
placeholder="请选择是否允许微信登录"
|
||||||
|
/>
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
<a-form-item label="微信客户端SECRET:" name="SNOWY_THIRD_WECHAT_CLIENT_SECRET">
|
<a-form-item label="clientId:" name="SNOWY_THIRD_WECHAT_CLIENT_ID" v-if="formData.SNOWY_THIRD_WECHAT_ALLOW_LOGIN_FLAG">
|
||||||
<a-input v-model:value="formData.SNOWY_THIRD_WECHAT_CLIENT_SECRET" placeholder="请输入微信客户端SECRET" />
|
<a-input v-model:value="formData.SNOWY_THIRD_WECHAT_CLIENT_ID" placeholder="请输入clientId" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
<a-form-item label="重定向URL:" name="SNOWY_THIRD_WECHAT_REDIRECT_URL">
|
<a-form-item label="clientSecret:" name="SNOWY_THIRD_WECHAT_CLIENT_SECRET" v-if="formData.SNOWY_THIRD_WECHAT_ALLOW_LOGIN_FLAG">
|
||||||
<a-input v-model:value="formData.SNOWY_THIRD_WECHAT_REDIRECT_URL" placeholder="请输入重定向URL" />
|
<a-input v-model:value="formData.SNOWY_THIRD_WECHAT_CLIENT_SECRET" placeholder="请输入clientSecret" />
|
||||||
|
</a-form-item>
|
||||||
|
</a-col>
|
||||||
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
|
<a-form-item label="redirectUrl:" name="SNOWY_THIRD_WECHAT_REDIRECT_URL" v-if="formData.SNOWY_THIRD_WECHAT_ALLOW_LOGIN_FLAG">
|
||||||
|
<a-input v-model:value="formData.SNOWY_THIRD_WECHAT_REDIRECT_URL" placeholder="请输入redirectUrl" />
|
||||||
</a-form-item>
|
</a-form-item>
|
||||||
</a-col>
|
</a-col>
|
||||||
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
<a-col :xs="24" :sm="24" :md="24" :lg="24" :xl="24">
|
||||||
@@ -56,18 +66,26 @@
|
|||||||
loadSpinning.value = false
|
loadSpinning.value = false
|
||||||
if (data) {
|
if (data) {
|
||||||
data.forEach((item) => {
|
data.forEach((item) => {
|
||||||
formData.value[item.configKey] = item.configValue
|
formData.value[item.configKey] = transferBooleanInValue(item.configValue)
|
||||||
})
|
})
|
||||||
} else {
|
} else {
|
||||||
message.warning('表单项不存在,请初始化数据库')
|
message.warning('表单项不存在,请初始化数据库')
|
||||||
}
|
}
|
||||||
})
|
})
|
||||||
|
// 转换值
|
||||||
|
const transferBooleanInValue = (value) => {
|
||||||
|
if (value === 'true' || value === 'false') {
|
||||||
|
return value === 'true'
|
||||||
|
} else {
|
||||||
|
return value
|
||||||
|
}
|
||||||
|
}
|
||||||
// 默认要校验的
|
// 默认要校验的
|
||||||
const formRules = {
|
const formRules = {
|
||||||
SNOWY_THIRD_WECHAT_CLIENT_ID: [required('请输入微信客户端ID')],
|
SNOWY_THIRD_WECHAT_ALLOW_LOGIN_FLAG: [required('请选择是否允许微信登录')],
|
||||||
SNOWY_THIRD_WECHAT_CLIENT_SECRET: [required('请输入微信客户端SECRET')],
|
SNOWY_THIRD_WECHAT_CLIENT_ID: [required('请输入clientId')],
|
||||||
SNOWY_THIRD_WECHAT_REDIRECT_URL: [required('请输入重定向URL')]
|
SNOWY_THIRD_WECHAT_CLIENT_SECRET: [required('请输入clientSecret')],
|
||||||
|
SNOWY_THIRD_WECHAT_REDIRECT_URL: [required('请输入redirectUrl')]
|
||||||
}
|
}
|
||||||
// 验证并提交数据
|
// 验证并提交数据
|
||||||
const onSubmit = () => {
|
const onSubmit = () => {
|
||||||
|
|||||||
@@ -10,12 +10,10 @@
|
|||||||
<span class="security-list-value">{{ item.value }}</span>
|
<span class="security-list-value">{{ item.value }}</span>
|
||||||
</template>
|
</template>
|
||||||
<template #avatar>
|
<template #avatar>
|
||||||
<wechat-outlined v-if="item.type === 'weChat'" class="bind-icon" :style="{ color: '#1AAD19' }" />
|
<verified-outlined v-if="item.type === 'password'" class="bind-icon" :style="{ color: '#a059e8' }" />
|
||||||
<mail-outlined v-if="item.type === 'email'" class="bind-icon" :style="{ color: '#fcab43' }" />
|
<mail-outlined v-if="item.type === 'email'" class="bind-icon" :style="{ color: '#fcab43' }" />
|
||||||
<mobile-outlined v-if="item.type === 'phone'" class="bind-icon" :style="{ color: '#43a0fc' }" />
|
<mobile-outlined v-if="item.type === 'phone'" class="bind-icon" :style="{ color: '#43a0fc' }" />
|
||||||
<verified-outlined v-if="item.type === 'password'" class="bind-icon" :style="{ color: '#a059e8' }" />
|
|
||||||
<usb-outlined v-if="item.type === 'otp'" class="bind-icon" :style="{ color: '#1AAD19' }" />
|
<usb-outlined v-if="item.type === 'otp'" class="bind-icon" :style="{ color: '#1AAD19' }" />
|
||||||
<GiteeIcon v-if="item.type === 'Gitee'" class="bind-icon xn-wd40" />
|
|
||||||
</template>
|
</template>
|
||||||
</a-list-item-meta>
|
</a-list-item-meta>
|
||||||
<template #actions>
|
<template #actions>
|
||||||
@@ -78,8 +76,7 @@
|
|||||||
type: 'phone',
|
type: 'phone',
|
||||||
bindStatus: userInfo && userInfo.value.phone
|
bindStatus: userInfo && userInfo.value.phone
|
||||||
},
|
},
|
||||||
{ title: '绑定微信', description: '未绑定', value: '', type: 'weChat', bindStatus: 0 },
|
{ title: '动态口令', description: '未绑定动态口令', value: '', type: 'otp', bindStatus: 0 }
|
||||||
{ title: '绑定Gitee', description: '未绑定', value: '', type: 'Gitee', bindStatus: 0 }
|
|
||||||
])
|
])
|
||||||
const bindCommon = (item) => {
|
const bindCommon = (item) => {
|
||||||
let key = item.type
|
let key = item.type
|
||||||
|
|||||||
@@ -30,14 +30,54 @@ public enum AuthThirdPlatformEnum {
|
|||||||
IAM("IAM"),
|
IAM("IAM"),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* GITEE
|
* 钉钉
|
||||||
*/
|
*/
|
||||||
GITEE("GITEE"),
|
DINGTALK("DINGTALK"),
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* WECHAT
|
* 企业微信
|
||||||
*/
|
*/
|
||||||
WECHAT("WECHAT");
|
WORKWECHAT("WORKWECHAT"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 飞书
|
||||||
|
*/
|
||||||
|
FEISHU("FEISHU"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* WeLink
|
||||||
|
*/
|
||||||
|
WELINK("WELINK"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 云之家
|
||||||
|
*/
|
||||||
|
YUNZHIJIA("YUNZHIJIA"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* QQ
|
||||||
|
*/
|
||||||
|
QQ("QQ"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微信
|
||||||
|
*/
|
||||||
|
WECHAT("WECHAT"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 微博
|
||||||
|
*/
|
||||||
|
WEIBO("WEIBO"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 抖音
|
||||||
|
*/
|
||||||
|
DOUYIN("DOUYIN"),
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 支付宝
|
||||||
|
*/
|
||||||
|
ALIPAY("ALIPAY");
|
||||||
|
|
||||||
private final String value;
|
private final String value;
|
||||||
|
|
||||||
@@ -46,7 +86,17 @@ public enum AuthThirdPlatformEnum {
|
|||||||
}
|
}
|
||||||
|
|
||||||
public static void validate(String value) {
|
public static void validate(String value) {
|
||||||
boolean flag = IAM.getValue().equals(value) || GITEE.getValue().equals(value) || WECHAT.getValue().equals(value);
|
boolean flag = IAM.getValue().equals(value) ||
|
||||||
|
DINGTALK.getValue().equals(value) ||
|
||||||
|
WORKWECHAT.getValue().equals(value) ||
|
||||||
|
FEISHU.getValue().equals(value) ||
|
||||||
|
WELINK.getValue().equals(value) ||
|
||||||
|
YUNZHIJIA.getValue().equals(value) ||
|
||||||
|
QQ.getValue().equals(value) ||
|
||||||
|
WECHAT.getValue().equals(value) ||
|
||||||
|
WEIBO.getValue().equals(value) ||
|
||||||
|
DOUYIN.getValue().equals(value) ||
|
||||||
|
ALIPAY.getValue().equals(value);
|
||||||
if(!flag) {
|
if(!flag) {
|
||||||
throw new CommonException("不支持的第三方平台:{}", value);
|
throw new CommonException("不支持的第三方平台:{}", value);
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -10,7 +10,7 @@
|
|||||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
|
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
|
||||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||||
*/
|
*/
|
||||||
package vip.xiaonuo.auth.modular.third.request;
|
package vip.xiaonuo.auth.modular.third.request.iam;
|
||||||
|
|
||||||
import me.zhyd.oauth.config.AuthSource;
|
import me.zhyd.oauth.config.AuthSource;
|
||||||
import me.zhyd.oauth.request.AuthDefaultRequest;
|
import me.zhyd.oauth.request.AuthDefaultRequest;
|
||||||
@@ -10,7 +10,7 @@
|
|||||||
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
|
* 5.不可二次分发开源参与同类竞品,如有想法可联系团队xiaonuobase@qq.com商议合作。
|
||||||
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
* 6.若您的项目无法满足以上几点,需要更多功能代码,获取Snowy商业授权许可,请在官网购买授权,地址为 https://www.xiaonuo.vip
|
||||||
*/
|
*/
|
||||||
package vip.xiaonuo.auth.modular.third.request;
|
package vip.xiaonuo.auth.modular.third.request.iam;
|
||||||
|
|
||||||
import com.alibaba.fastjson.JSONObject;
|
import com.alibaba.fastjson.JSONObject;
|
||||||
import lombok.Getter;
|
import lombok.Getter;
|
||||||
@@ -38,8 +38,6 @@ import java.util.Map;
|
|||||||
@Getter
|
@Getter
|
||||||
public class AuthThirdIamRequest extends AuthDefaultRequest {
|
public class AuthThirdIamRequest extends AuthDefaultRequest {
|
||||||
|
|
||||||
private final Map<String, String> authSourceOidcBaseJson;
|
|
||||||
|
|
||||||
static {
|
static {
|
||||||
Security.addProvider(new BouncyCastleProvider());
|
Security.addProvider(new BouncyCastleProvider());
|
||||||
}
|
}
|
||||||
@@ -48,7 +46,6 @@ public class AuthThirdIamRequest extends AuthDefaultRequest {
|
|||||||
super(config, new AuthThirdIamCommonSource(authSourceOidcBaseJson.get("authorizeUrl"),
|
super(config, new AuthThirdIamCommonSource(authSourceOidcBaseJson.get("authorizeUrl"),
|
||||||
authSourceOidcBaseJson.get("accessTokenUrl"),
|
authSourceOidcBaseJson.get("accessTokenUrl"),
|
||||||
authSourceOidcBaseJson.get("userInfoUrl")));
|
authSourceOidcBaseJson.get("userInfoUrl")));
|
||||||
this.authSourceOidcBaseJson = authSourceOidcBaseJson;
|
|
||||||
}
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@@ -28,9 +28,7 @@ import me.zhyd.oauth.config.AuthConfig;
|
|||||||
import me.zhyd.oauth.model.AuthCallback;
|
import me.zhyd.oauth.model.AuthCallback;
|
||||||
import me.zhyd.oauth.model.AuthResponse;
|
import me.zhyd.oauth.model.AuthResponse;
|
||||||
import me.zhyd.oauth.model.AuthUser;
|
import me.zhyd.oauth.model.AuthUser;
|
||||||
import me.zhyd.oauth.request.AuthGiteeRequest;
|
import me.zhyd.oauth.request.*;
|
||||||
import me.zhyd.oauth.request.AuthRequest;
|
|
||||||
import me.zhyd.oauth.request.AuthWeChatOpenRequest;
|
|
||||||
import me.zhyd.oauth.utils.AuthStateUtils;
|
import me.zhyd.oauth.utils.AuthStateUtils;
|
||||||
import org.springframework.stereotype.Service;
|
import org.springframework.stereotype.Service;
|
||||||
import org.springframework.transaction.annotation.Transactional;
|
import org.springframework.transaction.annotation.Transactional;
|
||||||
@@ -46,7 +44,7 @@ import vip.xiaonuo.auth.modular.third.param.AuthThirdBindAccountParam;
|
|||||||
import vip.xiaonuo.auth.modular.third.param.AuthThirdCallbackParam;
|
import vip.xiaonuo.auth.modular.third.param.AuthThirdCallbackParam;
|
||||||
import vip.xiaonuo.auth.modular.third.param.AuthThirdRenderParam;
|
import vip.xiaonuo.auth.modular.third.param.AuthThirdRenderParam;
|
||||||
import vip.xiaonuo.auth.modular.third.param.AuthThirdUserPageParam;
|
import vip.xiaonuo.auth.modular.third.param.AuthThirdUserPageParam;
|
||||||
import vip.xiaonuo.auth.modular.third.request.AuthThirdIamRequest;
|
import vip.xiaonuo.auth.modular.third.request.iam.AuthThirdIamRequest;
|
||||||
import vip.xiaonuo.auth.modular.third.result.AuthThirdRenderResult;
|
import vip.xiaonuo.auth.modular.third.result.AuthThirdRenderResult;
|
||||||
import vip.xiaonuo.auth.modular.third.service.AuthThirdService;
|
import vip.xiaonuo.auth.modular.third.service.AuthThirdService;
|
||||||
import vip.xiaonuo.common.cache.CommonCacheOperator;
|
import vip.xiaonuo.common.cache.CommonCacheOperator;
|
||||||
@@ -69,6 +67,7 @@ public class AuthThirdServiceImpl extends ServiceImpl<AuthThirdMapper, AuthThird
|
|||||||
/** 缓存前缀 */
|
/** 缓存前缀 */
|
||||||
private static final String CONFIG_CACHE_KEY = "auth-third-state:";
|
private static final String CONFIG_CACHE_KEY = "auth-third-state:";
|
||||||
|
|
||||||
|
private static final String SNOWY_THIRD_IAM_ALLOW_LOGIN_FLAG_KEY = "SNOWY_THIRD_IAM_ALLOW_LOGIN_FLAG";
|
||||||
private static final String SNOWY_THIRD_IAM_AUTHORIZE_URL_KEY = "SNOWY_THIRD_IAM_AUTHORIZE_URL";
|
private static final String SNOWY_THIRD_IAM_AUTHORIZE_URL_KEY = "SNOWY_THIRD_IAM_AUTHORIZE_URL";
|
||||||
private static final String SNOWY_THIRD_IAM_ACCESS_TOKEN_URL_KEY = "SNOWY_THIRD_IAM_ACCESS_TOKEN_URL";
|
private static final String SNOWY_THIRD_IAM_ACCESS_TOKEN_URL_KEY = "SNOWY_THIRD_IAM_ACCESS_TOKEN_URL";
|
||||||
private static final String SNOWY_THIRD_IAM_USER_INFO_URL_KEY = "SNOWY_THIRD_IAM_USER_INFO_URL";
|
private static final String SNOWY_THIRD_IAM_USER_INFO_URL_KEY = "SNOWY_THIRD_IAM_USER_INFO_URL";
|
||||||
@@ -76,10 +75,8 @@ public class AuthThirdServiceImpl extends ServiceImpl<AuthThirdMapper, AuthThird
|
|||||||
private static final String SNOWY_THIRD_IAM_CLIENT_SECRET_KEY = "SNOWY_THIRD_IAM_CLIENT_SECRET";
|
private static final String SNOWY_THIRD_IAM_CLIENT_SECRET_KEY = "SNOWY_THIRD_IAM_CLIENT_SECRET";
|
||||||
private static final String SNOWY_THIRD_IAM_REDIRECT_URL_KEY = "SNOWY_THIRD_IAM_REDIRECT_URL";
|
private static final String SNOWY_THIRD_IAM_REDIRECT_URL_KEY = "SNOWY_THIRD_IAM_REDIRECT_URL";
|
||||||
|
|
||||||
private static final String SNOWY_THIRD_GITEE_CLIENT_ID_KEY = "SNOWY_THIRD_GITEE_CLIENT_ID";
|
// 微信
|
||||||
private static final String SNOWY_THIRD_GITEE_CLIENT_SECRET_KEY = "SNOWY_THIRD_GITEE_CLIENT_SECRET";
|
private static final String SNOWY_THIRD_WECHAT_ALLOW_LOGIN_FLAG_KEY = "SNOWY_THIRD_WECHAT_ALLOW_LOGIN_FLAG";
|
||||||
private static final String SNOWY_THIRD_GITEE_REDIRECT_URL_KEY = "SNOWY_THIRD_GITEE_REDIRECT_URL";
|
|
||||||
|
|
||||||
private static final String SNOWY_THIRD_WECHAT_CLIENT_ID_KEY = "SNOWY_THIRD_WECHAT_CLIENT_ID";
|
private static final String SNOWY_THIRD_WECHAT_CLIENT_ID_KEY = "SNOWY_THIRD_WECHAT_CLIENT_ID";
|
||||||
private static final String SNOWY_THIRD_WECHAT_CLIENT_SECRET_KEY = "SNOWY_THIRD_WECHAT_CLIENT_SECRET";
|
private static final String SNOWY_THIRD_WECHAT_CLIENT_SECRET_KEY = "SNOWY_THIRD_WECHAT_CLIENT_SECRET";
|
||||||
private static final String SNOWY_THIRD_WECHAT_REDIRECT_URL_KEY = "SNOWY_THIRD_WECHAT_REDIRECT_URL";
|
private static final String SNOWY_THIRD_WECHAT_REDIRECT_URL_KEY = "SNOWY_THIRD_WECHAT_REDIRECT_URL";
|
||||||
@@ -258,8 +255,15 @@ public class AuthThirdServiceImpl extends ServiceImpl<AuthThirdMapper, AuthThird
|
|||||||
source = source.toUpperCase();
|
source = source.toUpperCase();
|
||||||
HttpUtil.setHttp(new HutoolImpl());
|
HttpUtil.setHttp(new HutoolImpl());
|
||||||
AuthThirdPlatformEnum.validate(source);
|
AuthThirdPlatformEnum.validate(source);
|
||||||
if (source.equals(AuthThirdPlatformEnum.IAM.getValue())) {
|
if(source.equals(AuthThirdPlatformEnum.IAM.getValue())) {
|
||||||
// 山信通登录
|
// 检查是否允许登录
|
||||||
|
if(!Boolean.parseBoolean(devConfigApi.getValueByKey(SNOWY_THIRD_IAM_ALLOW_LOGIN_FLAG_KEY))) {
|
||||||
|
throw new CommonException("IAM登录已禁用");
|
||||||
|
}
|
||||||
|
if(!devConfigApi.getValueByKey(SNOWY_THIRD_IAM_REDIRECT_URL_KEY).startsWith("http")) {
|
||||||
|
throw new CommonException("重定向地址配置错误");
|
||||||
|
}
|
||||||
|
// IAM登录
|
||||||
authRequest = new AuthThirdIamRequest(AuthConfig.builder()
|
authRequest = new AuthThirdIamRequest(AuthConfig.builder()
|
||||||
.clientId(devConfigApi.getValueByKey(SNOWY_THIRD_IAM_CLIENT_ID_KEY))
|
.clientId(devConfigApi.getValueByKey(SNOWY_THIRD_IAM_CLIENT_ID_KEY))
|
||||||
.clientSecret(devConfigApi.getValueByKey(SNOWY_THIRD_IAM_CLIENT_SECRET_KEY))
|
.clientSecret(devConfigApi.getValueByKey(SNOWY_THIRD_IAM_CLIENT_SECRET_KEY))
|
||||||
@@ -271,16 +275,14 @@ public class AuthThirdServiceImpl extends ServiceImpl<AuthThirdMapper, AuthThird
|
|||||||
"accessTokenUrl", devConfigApi.getValueByKey(SNOWY_THIRD_IAM_ACCESS_TOKEN_URL_KEY),
|
"accessTokenUrl", devConfigApi.getValueByKey(SNOWY_THIRD_IAM_ACCESS_TOKEN_URL_KEY),
|
||||||
"userInfoUrl", devConfigApi.getValueByKey(SNOWY_THIRD_IAM_USER_INFO_URL_KEY)));
|
"userInfoUrl", devConfigApi.getValueByKey(SNOWY_THIRD_IAM_USER_INFO_URL_KEY)));
|
||||||
}
|
}
|
||||||
if (source.equals(AuthThirdPlatformEnum.GITEE.getValue())) {
|
|
||||||
// GITEE登录
|
|
||||||
authRequest = new AuthGiteeRequest(AuthConfig.builder()
|
|
||||||
.clientId(devConfigApi.getValueByKey(SNOWY_THIRD_GITEE_CLIENT_ID_KEY))
|
|
||||||
.clientSecret(devConfigApi.getValueByKey(SNOWY_THIRD_GITEE_CLIENT_SECRET_KEY))
|
|
||||||
.redirectUri(devConfigApi.getValueByKey(SNOWY_THIRD_GITEE_REDIRECT_URL_KEY))
|
|
||||||
.ignoreCheckState(true)
|
|
||||||
.build());
|
|
||||||
}
|
|
||||||
if(source.equals(AuthThirdPlatformEnum.WECHAT.getValue())){
|
if(source.equals(AuthThirdPlatformEnum.WECHAT.getValue())){
|
||||||
|
// 检查是否允许登录
|
||||||
|
if(!Boolean.parseBoolean(devConfigApi.getValueByKey(SNOWY_THIRD_WECHAT_ALLOW_LOGIN_FLAG_KEY))) {
|
||||||
|
throw new CommonException("微信登录已禁用");
|
||||||
|
}
|
||||||
|
if(!devConfigApi.getValueByKey(SNOWY_THIRD_WECHAT_REDIRECT_URL_KEY).startsWith("http")) {
|
||||||
|
throw new CommonException("重定向地址配置错误");
|
||||||
|
}
|
||||||
// 微信登录
|
// 微信登录
|
||||||
authRequest = new AuthWeChatOpenRequest(AuthConfig.builder()
|
authRequest = new AuthWeChatOpenRequest(AuthConfig.builder()
|
||||||
.clientId(devConfigApi.getValueByKey(SNOWY_THIRD_WECHAT_CLIENT_ID_KEY))
|
.clientId(devConfigApi.getValueByKey(SNOWY_THIRD_WECHAT_CLIENT_ID_KEY))
|
||||||
|
|||||||
@@ -88,6 +88,19 @@ public class DevConfigController {
|
|||||||
return CommonResult.data(devConfigService.sysBaseList());
|
return CommonResult.data(devConfigService.sysBaseList());
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取系统三方登录开关配置
|
||||||
|
*
|
||||||
|
* @author xuyuxiang
|
||||||
|
* @date 2022/4/24 20:00
|
||||||
|
*/
|
||||||
|
@ApiOperationSupport(order = 2)
|
||||||
|
@Operation(summary = "获取系统三方登录开关配置")
|
||||||
|
@GetMapping("/dev/config/sysThirdAllowFlagList")
|
||||||
|
public CommonResult<List<DevConfig>> sysThirdAllowFlagList() {
|
||||||
|
return CommonResult.data(devConfigService.sysThirdAllowFlagList());
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取配置列表
|
* 获取配置列表
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -51,6 +51,14 @@ public interface DevConfigService extends IService<DevConfig> {
|
|||||||
*/
|
*/
|
||||||
List<DevConfig> sysBaseList();
|
List<DevConfig> sysBaseList();
|
||||||
|
|
||||||
|
/**
|
||||||
|
* 获取系统三方登录开关配置
|
||||||
|
*
|
||||||
|
* @author xuyuxiang
|
||||||
|
* @date 2022/4/24 20:08
|
||||||
|
*/
|
||||||
|
List<DevConfig> sysThirdAllowFlagList();
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* 获取配置列表
|
* 获取配置列表
|
||||||
*
|
*
|
||||||
|
|||||||
@@ -135,6 +135,19 @@ public class DevConfigServiceImpl extends ServiceImpl<DevConfigMapper, DevConfig
|
|||||||
return this.list(lambdaQueryWrapper);
|
return this.list(lambdaQueryWrapper);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@Override
|
||||||
|
public List<DevConfig> sysThirdAllowFlagList() {
|
||||||
|
LambdaQueryWrapper<DevConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
// 查询部分字段
|
||||||
|
lambdaQueryWrapper.select(DevConfig::getId, DevConfig::getConfigKey, DevConfig::getConfigValue,
|
||||||
|
DevConfig::getCategory, DevConfig::getSortCode, DevConfig::getRemark);
|
||||||
|
// key以SNOWY_THIRD开头
|
||||||
|
lambdaQueryWrapper.like(DevConfig::getConfigKey, "SNOWY_THIRD");
|
||||||
|
// key以ALLOW_LOGIN_FLAG结尾
|
||||||
|
lambdaQueryWrapper.like(DevConfig::getConfigKey, "ALLOW_LOGIN_FLAG");
|
||||||
|
return this.list(lambdaQueryWrapper);
|
||||||
|
}
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
public List<DevConfig> list(DevConfigListParam devConfigListParam) {
|
public List<DevConfig> list(DevConfigListParam devConfigListParam) {
|
||||||
LambdaQueryWrapper<DevConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<DevConfig> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
|
|||||||
@@ -65,7 +65,7 @@ public class DevDictServiceImpl extends ServiceImpl<DevDictMapper, DevDict> impl
|
|||||||
QueryWrapper<DevDict> queryWrapper = new QueryWrapper<DevDict>().checkSqlInjection();
|
QueryWrapper<DevDict> queryWrapper = new QueryWrapper<DevDict>().checkSqlInjection();
|
||||||
// 查询部分字段
|
// 查询部分字段
|
||||||
queryWrapper.lambda().select(DevDict::getId, DevDict::getParentId, DevDict::getCategory, DevDict::getDictLabel,
|
queryWrapper.lambda().select(DevDict::getId, DevDict::getParentId, DevDict::getCategory, DevDict::getDictLabel,
|
||||||
DevDict::getDictValue, DevDict::getSortCode);
|
DevDict::getDictValue, DevDict::getDictColor, DevDict::getSortCode);
|
||||||
if (ObjectUtil.isNotEmpty(devDictPageParam.getParentId())) {
|
if (ObjectUtil.isNotEmpty(devDictPageParam.getParentId())) {
|
||||||
queryWrapper.lambda().and(q -> q.eq(DevDict::getParentId, devDictPageParam.getParentId())
|
queryWrapper.lambda().and(q -> q.eq(DevDict::getParentId, devDictPageParam.getParentId())
|
||||||
.or().eq(DevDict::getId, devDictPageParam.getParentId()));
|
.or().eq(DevDict::getId, devDictPageParam.getParentId()));
|
||||||
@@ -103,7 +103,7 @@ public class DevDictServiceImpl extends ServiceImpl<DevDictMapper, DevDict> impl
|
|||||||
LambdaQueryWrapper<DevDict> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
LambdaQueryWrapper<DevDict> lambdaQueryWrapper = new LambdaQueryWrapper<>();
|
||||||
// 查询部分字段
|
// 查询部分字段
|
||||||
lambdaQueryWrapper.select(DevDict::getId, DevDict::getParentId, DevDict::getCategory, DevDict::getDictLabel,
|
lambdaQueryWrapper.select(DevDict::getId, DevDict::getParentId, DevDict::getCategory, DevDict::getDictLabel,
|
||||||
DevDict::getDictValue, DevDict::getSortCode);
|
DevDict::getDictValue, DevDict::getDictColor, DevDict::getSortCode);
|
||||||
lambdaQueryWrapper.orderByAsc(DevDict::getSortCode);
|
lambdaQueryWrapper.orderByAsc(DevDict::getSortCode);
|
||||||
if (ObjectUtil.isNotEmpty(devDictTreeParam.getCategory())) {
|
if (ObjectUtil.isNotEmpty(devDictTreeParam.getCategory())) {
|
||||||
lambdaQueryWrapper.eq(DevDict::getCategory, devDictTreeParam.getCategory());
|
lambdaQueryWrapper.eq(DevDict::getCategory, devDictTreeParam.getCategory());
|
||||||
|
|||||||
@@ -153,6 +153,8 @@ public class GlobalConfigure implements WebMvcConfigurer {
|
|||||||
|
|
||||||
/* 系统基础配置 */
|
/* 系统基础配置 */
|
||||||
"/dev/config/sysBaseList",
|
"/dev/config/sysBaseList",
|
||||||
|
/* 系统三方登录开关配置 */
|
||||||
|
"/dev/config/sysThirdAllowFlagList",
|
||||||
|
|
||||||
/* 系统字典树 */
|
/* 系统字典树 */
|
||||||
"/dev/dict/tree",
|
"/dev/dict/tree",
|
||||||
|
|||||||
@@ -205,9 +205,7 @@ INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967463', 'SNOWY_SYS_DEFAULT_FILE_
|
|||||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967464', 'SNOWY_SYS_DEFAULT_PASSWORD_FOR_B', '123456', 'PASSWORD_STRATEGY_FOR_B', 'B端默认用户密码', 10, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967464', 'SNOWY_SYS_DEFAULT_PASSWORD_FOR_B', '123456', 'PASSWORD_STRATEGY_FOR_B', 'B端默认用户密码', 10, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967465', 'SNOWY_SYS_DEFAULT_DESCRRIPTION', 'Snowy是一款国内首例国产密码算法加密框架,采用Vue3.x+AntDesignVue4.x+SpringBoot3.x前后分离技术打造,技术框架与密码的结合,让前后分离‘密’不可分!', 'SYS_BASE', '系统描述', 11, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967465', 'SNOWY_SYS_DEFAULT_DESCRRIPTION', 'Snowy是一款国内首例国产密码算法加密框架,采用Vue3.x+AntDesignVue4.x+SpringBoot3.x前后分离技术打造,技术框架与密码的结合,让前后分离‘密’不可分!', 'SYS_BASE', '系统描述', 11, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967466', 'SNOWY_SYS_DEFAULT_WORKBENCH_DATA', '{\"shortcut\":[{\"id\":\"1548901111999770526\",\"title\":\"系统首页\",\"icon\":\"home-outlined\",\"path\":\"/index\"}]}', 'SYS_BASE', '系统默认工作台数据', 12, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967466', 'SNOWY_SYS_DEFAULT_WORKBENCH_DATA', '{\"shortcut\":[{\"id\":\"1548901111999770526\",\"title\":\"系统首页\",\"icon\":\"home-outlined\",\"path\":\"/index\"}]}', 'SYS_BASE', '系统默认工作台数据', 12, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967558', 'SNOWY_THIRD_GITEE_CLIENT_ID', 'GiteeClientId', 'THIRD_GITEE', 'GiteeClientId', 13, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967560', 'SNOWY_THIRD_WECHAT_ALLOW_LOGIN_FLAG', 'false', 'THIRD_WECHAT', '是否允许微信登录', 13, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967559', 'SNOWY_THIRD_GITEE_CLIENT_SECRET', 'GiteeClientSecret', 'THIRD_GITEE', 'GiteeClientSecret', 14, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
|
||||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967560', 'SNOWY_THIRD_GITEE_REDIRECT_URL', 'http://localhost:81/callback?platform=gitee', 'THIRD_GITEE', 'Gitee重定向地址', 15, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
|
||||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967561', 'SNOWY_THIRD_WECHAT_CLIENT_ID', 'WechatClientId', 'THIRD_WECHAT', 'WechatClientId', 16, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967561', 'SNOWY_THIRD_WECHAT_CLIENT_ID', 'WechatClientId', 'THIRD_WECHAT', 'WechatClientId', 16, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967562', 'SNOWY_THIRD_WECHAT_CLIENT_SECRET', 'WechatClientSecret', 'THIRD_WECHAT', 'WechatClientSecret', 17, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967562', 'SNOWY_THIRD_WECHAT_CLIENT_SECRET', 'WechatClientSecret', 'THIRD_WECHAT', 'WechatClientSecret', 17, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||||
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967563', 'SNOWY_THIRD_WECHAT_REDIRECT_URL', 'Wechat重定向地址', 'THIRD_WECHAT', 'Wechat重定向地址', 18, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
INSERT INTO `DEV_CONFIG` VALUES ('1554740179362967563', 'SNOWY_THIRD_WECHAT_REDIRECT_URL', 'Wechat重定向地址', 'THIRD_WECHAT', 'Wechat重定向地址', 18, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||||
@@ -347,6 +345,7 @@ INSERT INTO `DEV_CONFIG` VALUES ('1908870094824755296', 'SNOWY_THIRD_IAM_USER_IN
|
|||||||
INSERT INTO `DEV_CONFIG` VALUES ('1908870094824755297', 'SNOWY_THIRD_IAM_CLIENT_ID', 'IAM客户端ID', 'THIRD_IAM', 'IAM客户端ID', 180, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
INSERT INTO `DEV_CONFIG` VALUES ('1908870094824755297', 'SNOWY_THIRD_IAM_CLIENT_ID', 'IAM客户端ID', 'THIRD_IAM', 'IAM客户端ID', 180, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||||
INSERT INTO `DEV_CONFIG` VALUES ('1908870094824755298', 'SNOWY_THIRD_IAM_CLIENT_SECRET', 'IAM客户端SECRET', 'THIRD_IAM', 'IAM客户端SECRET', 181, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
INSERT INTO `DEV_CONFIG` VALUES ('1908870094824755298', 'SNOWY_THIRD_IAM_CLIENT_SECRET', 'IAM客户端SECRET', 'THIRD_IAM', 'IAM客户端SECRET', 181, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||||
INSERT INTO `DEV_CONFIG` VALUES ('1908870094824755299', 'SNOWY_THIRD_IAM_REDIRECT_URL', '重定向URL', 'THIRD_IAM', '重定向URL', 182, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
INSERT INTO `DEV_CONFIG` VALUES ('1908870094824755299', 'SNOWY_THIRD_IAM_REDIRECT_URL', '重定向URL', 'THIRD_IAM', '重定向URL', 182, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||||
|
INSERT INTO `DEV_CONFIG` VALUES ('1908870094824755300', 'SNOWY_THIRD_IAM_ALLOW_LOGIN_FLAG', 'false', 'THIRD_IAM', '是否允许IAM登录', 183, NULL, 'NOT_DELETE', NULL, NULL, NULL, NULL);
|
||||||
|
|
||||||
-- ----------------------------
|
-- ----------------------------
|
||||||
-- Table structure for DEV_DICT
|
-- Table structure for DEV_DICT
|
||||||
@@ -357,6 +356,7 @@ CREATE TABLE `DEV_DICT` (
|
|||||||
`PARENT_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父id',
|
`PARENT_ID` varchar(20) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '父id',
|
||||||
`DICT_LABEL` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典文字',
|
`DICT_LABEL` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典文字',
|
||||||
`DICT_VALUE` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典值',
|
`DICT_VALUE` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典值',
|
||||||
|
`DICT_COLOR` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '字典颜色',
|
||||||
`CODE` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '编码',
|
`CODE` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '编码',
|
||||||
`CATEGORY` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分类',
|
`CATEGORY` varchar(255) CHARACTER SET utf8mb4 COLLATE utf8mb4_general_ci NULL DEFAULT NULL COMMENT '分类',
|
||||||
`SORT_CODE` int(11) NULL DEFAULT NULL COMMENT '排序码',
|
`SORT_CODE` int(11) NULL DEFAULT NULL COMMENT '排序码',
|
||||||
|
|||||||
Reference in New Issue
Block a user