Browse Source

👣 架构配置重新配置,调整为目前公司最合适的配置

master
wangxiang 3 years ago
parent
commit
eb241ea3ec
  1. 2
      kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccCustomTokenServices.java
  2. 3
      kicc-gateway/src/main/java/com/cloud/kicc/gateway/filter/ApiLoggingFilter.java
  3. 6
      kicc-ui/src/layouts/default/header/components/lock/LockModal.vue
  4. 6
      kicc-ui/src/layouts/default/header/components/user-dropdown/index.vue
  5. 1
      kicc-ui/src/store/modules/lock.ts
  6. 2
      kicc-ui/src/views/dashboard/workbench/components/WorkbenchHeader.vue
  7. 117
      kicc-ui/src/views/sys/lock/LockPage.vue
  8. 4
      kicc-ui/src/views/sys/login/SessionTimeoutLogin.vue
  9. 2
      kicc-ui/src/views/system/dept/DeptModal.vue
  10. 2
      kicc-ui/src/views/system/menu/MenuModal.vue

2
kicc-common/kicc-common-security/src/main/java/com/cloud/kicc/common/security/override/KiccCustomTokenServices.java

@ -50,6 +50,7 @@ public class KiccCustomTokenServices implements AuthorizationServerTokenServices
* Initialize these token services. If no random generator is set, one will be * Initialize these token services. If no random generator is set, one will be
* created. * created.
*/ */
@Override
public void afterPropertiesSet() { public void afterPropertiesSet() {
Assert.notNull(tokenStore, "tokenStore must be set"); Assert.notNull(tokenStore, "tokenStore must be set");
} }
@ -89,6 +90,7 @@ public class KiccCustomTokenServices implements AuthorizationServerTokenServices
return accessToken; return accessToken;
} }
@Override
@Transactional(noRollbackFor = { InvalidTokenException.class, InvalidGrantException.class }) @Transactional(noRollbackFor = { InvalidTokenException.class, InvalidGrantException.class })
public OAuth2AccessToken refreshAccessToken(String refreshTokenValue, TokenRequest tokenRequest) public OAuth2AccessToken refreshAccessToken(String refreshTokenValue, TokenRequest tokenRequest)
throws AuthenticationException { throws AuthenticationException {

3
kicc-gateway/src/main/java/com/cloud/kicc/gateway/filter/ApiLoggingFilter.java

@ -26,7 +26,8 @@ public class ApiLoggingFilter implements GlobalFilter, Ordered {
private static final String START_TIME = "startTime"; private static final String START_TIME = "startTime";
private static final String X_REAL_IP = "X-Real-IP";// nginx需要配置 /** nginx需要配置 */
private static final String X_REAL_IP = "X-Real-IP";
@Override @Override
public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) { public Mono<Void> filter(ServerWebExchange exchange, GatewayFilterChain chain) {

6
kicc-ui/src/layouts/default/header/components/lock/LockModal.vue

@ -10,7 +10,7 @@
<div :class="`${prefixCls}__header`"> <div :class="`${prefixCls}__header`">
<img :src="avatar" :class="`${prefixCls}__header-img`" /> <img :src="avatar" :class="`${prefixCls}__header-img`" />
<p :class="`${prefixCls}__header-name`"> <p :class="`${prefixCls}__header-name`">
{{ getRealName }} {{ getNickName }}
</p> </p>
</div> </div>
@ -43,7 +43,7 @@
const userStore = useUserStore(); const userStore = useUserStore();
const lockStore = useLockStore(); const lockStore = useLockStore();
const getRealName = computed(() => userStore.getUserInfo?.realName); const getNickName = computed(() => userStore.getUserInfo?.nickName);
const [register, { closeModal }] = useModalInner(); const [register, { closeModal }] = useModalInner();
const [registerForm, { validateFields, resetFields }] = useForm({ const [registerForm, { validateFields, resetFields }] = useForm({
@ -78,7 +78,7 @@
return { return {
t, t,
prefixCls, prefixCls,
getRealName, getNickName,
register, register,
registerForm, registerForm,
handleLock, handleLock,

6
kicc-ui/src/layouts/default/header/components/user-dropdown/index.vue

@ -4,7 +4,7 @@
<img :class="`${prefixCls}__header`" :src="getUserInfo.avatar" /> <img :class="`${prefixCls}__header`" :src="getUserInfo.avatar" />
<span :class="`${prefixCls}__info hidden md:block`"> <span :class="`${prefixCls}__info hidden md:block`">
<span :class="`${prefixCls}__name `" class="truncate"> <span :class="`${prefixCls}__name `" class="truncate">
{{ getUserInfo.realName }} {{ getUserInfo.nickName }}
</span> </span>
</span> </span>
</span> </span>
@ -58,8 +58,8 @@
const userStore = useUserStore(); const userStore = useUserStore();
const getUserInfo = computed(() => { const getUserInfo = computed(() => {
const { realName = '', avatar, desc } = userStore.getUserInfo || {}; const { nickName = '', avatar, remarks } = userStore.getUserInfo || {};
return { realName, avatar: avatar, desc }; return { nickName, avatar: avatar, remarks };
}); });
const [register, { openModal }] = useModal(); const [register, { openModal }] = useModal();

1
kicc-ui/src/store/modules/lock.ts

@ -52,6 +52,7 @@ export const useLockStore = defineStore({
username, username,
password: password!, password: password!,
goHome: false, goHome: false,
// todo: 锁屏解锁登录,需要验证码,后期完善 // todo: 锁屏解锁登录,需要验证码,后期完善
realKey: '', realKey: '',
code: '', code: '',

2
kicc-ui/src/views/dashboard/workbench/components/WorkbenchHeader.vue

@ -2,7 +2,7 @@
<div class="lg:flex"> <div class="lg:flex">
<Avatar :src="userinfo.avatar" :size="72" class="!mx-auto !block" /> <Avatar :src="userinfo.avatar" :size="72" class="!mx-auto !block" />
<div class="md:ml-6 flex flex-col justify-center md:mt-0 mt-2"> <div class="md:ml-6 flex flex-col justify-center md:mt-0 mt-2">
<h1 class="md:text-lg text-md">早安, {{ userinfo.realName }}, 开始您一天的工作吧</h1> <h1 class="md:text-lg text-md">早安, {{ userinfo.nickName }}, 开始您一天的工作吧</h1>
<span class="text-secondary"> 今日晴20 - 32 </span> <span class="text-secondary"> 今日晴20 - 32 </span>
</div> </div>
<div class="flex flex-1 justify-end md:mt-0 mt-4"> <div class="flex flex-1 justify-end md:mt-0 mt-4">

117
kicc-ui/src/views/sys/lock/LockPage.vue

@ -1,92 +1,73 @@
<template> <template>
<div <div :class="prefixCls"
:class="prefixCls" class="fixed inset-0 flex h-screen w-screen bg-black items-center justify-center"
class="fixed inset-0 flex h-screen w-screen bg-black items-center justify-center"
> >
<div <!--解锁区域-->
:class="`${prefixCls}__unlock`" <div v-show="showDate"
class=" :class="`${prefixCls}__unlock`"
absolute class="absolute top-0 left-1/2 flex pt-5 h-16 items-center justify-center sm:text-md xl:text-xl text-white flex-col cursor-pointer transform translate-x-1/2"
top-0 @click="handleShowForm(false)"
left-1/2
flex
pt-5
h-16
items-center
justify-center
sm:text-md
xl:text-xl
text-white
flex-col
cursor-pointer
transform
translate-x-1/2
"
@click="handleShowForm(false)"
v-show="showDate"
> >
<LockOutlined /> <LockOutlined/>
<span>{{ t('sys.lock.unlock') }}</span> <span>{{ t('sys.lock.unlock') }}</span>
</div> </div>
<!--锁屏时间区域-->
<div class="flex w-screen h-screen justify-center items-center"> <div class="flex w-screen h-screen justify-center items-center">
<div :class="`${prefixCls}__hour`" class="relative mr-5 md:mr-20 w-2/5 h-2/5 md:h-4/5"> <div :class="`${prefixCls}__hour`" class="relative mr-5 md:mr-20 w-2/5 h-2/5 md:h-4/5">
<span>{{ hour }}</span> <span>{{ hour }}</span>
<span class="meridiem absolute left-5 top-5 text-md xl:text-xl" v-show="showDate"> <span v-show="showDate" class="meridiem absolute left-5 top-5 text-md xl:text-xl">
{{ meridiem }} {{ meridiem }}
</span> </span>
</div> </div>
<div :class="`${prefixCls}__minute w-2/5 h-2/5 md:h-4/5 `"> <div :class="`${prefixCls}__minute w-2/5 h-2/5 md:h-4/5 `">
<span> {{ minute }}</span> <span>{{ minute }}</span>
</div> </div>
</div> </div>
<!--锁屏登录区域-->
<transition name="fade-slide"> <transition name="fade-slide">
<div :class="`${prefixCls}-entry`" v-show="!showDate"> <div :class="`${prefixCls}-entry`" v-show="!showDate">
<div :class="`${prefixCls}-entry-content`"> <div :class="`${prefixCls}-entry-content`">
<div :class="`${prefixCls}-entry__header enter-x`"> <div :class="`${prefixCls}-entry__header enter-x`">
<img :src="userinfo.avatar" :class="`${prefixCls}-entry__header-img`" /> <img :src="userinfo.avatar" :class="`${prefixCls}-entry__header-img`"/>
<p :class="`${prefixCls}-entry__header-name`"> <p :class="`${prefixCls}-entry__header-name`">
{{ userinfo.realName }} {{ userinfo.nickName }}
</p> </p>
</div> </div>
<InputPassword <InputPassword v-model:value="password"
:placeholder="t('sys.lock.placeholder')" :placeholder="t('sys.lock.placeholder')"
class="enter-x" class="enter-x"
v-model:value="password"
/> />
<span :class="`${prefixCls}-entry__err-msg enter-x`" v-if="errMsg"> <span :class="`${prefixCls}-entry__err-msg enter-x`" v-if="errMsg">
{{ t('sys.lock.alert') }} {{ t('sys.lock.alert') }}
</span> </span>
<div :class="`${prefixCls}-entry__footer enter-x`"> <div :class="`${prefixCls}-entry__footer enter-x`">
<a-button <a-button type="link"
type="link" size="small"
size="small" class="mt-2 mr-2 enter-x"
class="mt-2 mr-2 enter-x" :disabled="loading"
:disabled="loading" @click="handleShowForm(true)"
@click="handleShowForm(true)" >{{ t('common.back') }}</a-button>
> <a-button type="link"
{{ t('common.back') }} size="small"
</a-button> class="mt-2 mr-2 enter-x"
<a-button :disabled="loading"
type="link" @click="goLogin"
size="small" >{{ t('sys.lock.backToLogin') }}</a-button>
class="mt-2 mr-2 enter-x" <a-button type="link"
:disabled="loading" size="small"
@click="goLogin" class="mt-2"
> :loading="loading"
{{ t('sys.lock.backToLogin') }} @click="unLock()"
</a-button> >{{ t('sys.lock.entry') }}</a-button>
<a-button class="mt-2" type="link" size="small" @click="unLock()" :loading="loading">
{{ t('sys.lock.entry') }}
</a-button>
</div> </div>
</div> </div>
</div> </div>
</transition> </transition>
<!--锁屏登录时间区域-->
<div class="absolute bottom-5 w-full text-gray-300 xl:text-xl 2xl:text-3xl text-center enter-y"> <div class="absolute bottom-5 w-full text-gray-300 xl:text-xl 2xl:text-3xl text-center enter-y">
<div class="text-5xl mb-4 enter-x" v-show="!showDate"> <div v-show="!showDate" class="text-5xl mb-4 enter-x">
{{ hour }}:{{ minute }} <span class="text-3xl">{{ meridiem }}</span> {{ hour }}:{{ minute }}
<span class="text-3xl">{{ meridiem }}</span>
</div> </div>
<div class="text-2xl"> {{ year }}/{{ month }}/{{ day }} {{ week }} </div> <div class="text-2xl"> {{ year }}/{{ month }}/{{ day }} {{ week }} </div>
</div> </div>
@ -100,34 +81,26 @@
import { useI18n } from '/@/hooks/web/useI18n'; import { useI18n } from '/@/hooks/web/useI18n';
import { useNow } from './useNow'; import { useNow } from './useNow';
import { useDesign } from '/@/hooks/web/useDesign'; import { useDesign } from '/@/hooks/web/useDesign';
import { LockOutlined } from '@ant-design/icons-vue' import { LockOutlined } from '@ant-design/icons-vue';
import { UserInfo } from "/#/store";
const InputPassword = Input.Password; const InputPassword = Input.Password;
const password = ref(''); const password = ref('');
const loading = ref(false); const loading = ref(false);
const errMsg = ref(false); const errMsg = ref(false);
const showDate = ref(true); const showDate = ref(true);
const { prefixCls } = useDesign('lock-page'); const { prefixCls } = useDesign('lock-page');
const lockStore = useLockStore(); const lockStore = useLockStore();
const userStore = useUserStore(); const userStore = useUserStore();
const { hour, month, minute, meridiem, year, day, week } = useNow(true); const { hour, month, minute, meridiem, year, day, week } = useNow(true);
const { t } = useI18n(); const { t } = useI18n();
const userinfo = computed<UserInfo>(() => {
const userinfo = computed(() => {
return userStore.getUserInfo || {}; return userStore.getUserInfo || {};
}); });
/** /** 解锁 */
* @description: unLock
*/
async function unLock() { async function unLock() {
if (!password.value) { if (!password.value) return;
return;
}
let pwd = password.value; let pwd = password.value;
try { try {
loading.value = true; loading.value = true;
@ -138,11 +111,13 @@
} }
} }
/** 跳转登陆页面 */
function goLogin() { function goLogin() {
userStore.logout(true); userStore.logout(true);
lockStore.resetLockInfo(); lockStore.resetLockInfo();
} }
/** 处理显示锁屏登录区域 */
function handleShowForm(show = false) { function handleShowForm(show = false) {
showDate.value = show; showDate.value = show;
} }

4
kicc-ui/src/views/sys/login/SessionTimeoutLogin.vue

@ -19,12 +19,12 @@
onMounted(() => { onMounted(() => {
// UserId // UserId
userId.value = userStore.getUserInfo?.userId; userId.value = userStore.getUserInfo.id;
console.log('Mounted', userStore.getUserInfo); console.log('Mounted', userStore.getUserInfo);
}); });
onBeforeUnmount(() => { onBeforeUnmount(() => {
if (userId.value && userId.value !== userStore.getUserInfo.userId) { if (userId.value && userId.value !== userStore.getUserInfo.id) {
// 便 // 便
document.location.reload(); document.location.reload();
} else if (permissionStore.getLastBuildMenuTime === 0) { } else if (permissionStore.getLastBuildMenuTime === 0) {

2
kicc-ui/src/views/system/dept/DeptModal.vue

@ -22,7 +22,7 @@
import { listToTree } from "/@/utils/helper/treeHelper"; import { listToTree } from "/@/utils/helper/treeHelper";
/** 通用变量统一声明区域 */ /** 通用变量统一声明区域 */
const tag = ref<string>(''); const tag = ref<Nullable<string>>('');
/** https://v3.cn.vuejs.org/api/options-data.html#emits */ /** https://v3.cn.vuejs.org/api/options-data.html#emits */
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const [registerForm, { resetFields, setFieldsValue, updateSchema, validate, clearValidate }] = useForm({ const [registerForm, { resetFields, setFieldsValue, updateSchema, validate, clearValidate }] = useForm({

2
kicc-ui/src/views/system/menu/MenuModal.vue

@ -22,7 +22,7 @@
import { listToTree } from '/@/utils/helper/treeHelper'; import { listToTree } from '/@/utils/helper/treeHelper';
/** 通用变量统一声明区域 */ /** 通用变量统一声明区域 */
const tag = ref<string>(''); const tag = ref<Nullable<string>>('');
/** https://v3.cn.vuejs.org/api/options-data.html#emits */ /** https://v3.cn.vuejs.org/api/options-data.html#emits */
const emit = defineEmits(['success', 'register']); const emit = defineEmits(['success', 'register']);
const [registerForm, { resetFields, setFieldsValue, updateSchema, validate, clearValidate }] = useForm({ const [registerForm, { resetFields, setFieldsValue, updateSchema, validate, clearValidate }] = useForm({

Loading…
Cancel
Save