modify Login UI for OIDC login
This commit is contained in:
+55
-13
@@ -1,8 +1,9 @@
|
||||
import { defineStore, acceptHMRUpdate } from 'pinia'
|
||||
import { current, login } from '@/api/user'
|
||||
import { setToken, removeToken } from '@/utils/auth'
|
||||
import { setToken, removeToken, setCode, removeCode } from '@/utils/auth'
|
||||
import { useRouteStore } from '@/store/router'
|
||||
import { useAppStore } from '@/store/app'
|
||||
import { oidcAuth, oidcQuery } from '@/api/login';
|
||||
|
||||
export const useUserStore = defineStore({
|
||||
id: 'user',
|
||||
@@ -16,34 +17,40 @@ export const useUserStore = defineStore({
|
||||
}),
|
||||
|
||||
actions: {
|
||||
logout () {
|
||||
logout() {
|
||||
removeToken()
|
||||
removeCode()
|
||||
this.$patch({
|
||||
name: '',
|
||||
role: {},
|
||||
})
|
||||
},
|
||||
|
||||
async login (form) {
|
||||
saveUserData(userData) {
|
||||
// useAppStore().getAppConfig()
|
||||
setToken(userData.token)
|
||||
//
|
||||
localStorage.setItem('user_info', JSON.stringify({ name: userData.username }))
|
||||
this.$patch({
|
||||
...userData,
|
||||
})
|
||||
if (userData.route_names && userData.route_names.length) {
|
||||
useRouteStore().addRoutes(userData.route_names)
|
||||
}
|
||||
},
|
||||
|
||||
async login(form) {
|
||||
const res = await login(form).catch(_ => false)
|
||||
if (res) {
|
||||
useAppStore().getAppConfig()
|
||||
const userData = res.data
|
||||
setToken(userData.token)
|
||||
//
|
||||
localStorage.setItem('user_info', JSON.stringify({ name: userData.username }))
|
||||
this.$patch({
|
||||
...userData,
|
||||
})
|
||||
if (userData.route_names && userData.route_names.length) {
|
||||
useRouteStore().addRoutes(userData.route_names)
|
||||
}
|
||||
this.saveUserData(userData)
|
||||
return userData
|
||||
} else {
|
||||
return false
|
||||
}
|
||||
},
|
||||
async info () {
|
||||
async info() {
|
||||
const res = await current().catch(_ => false)
|
||||
if (res) {
|
||||
useAppStore().getAppConfig()
|
||||
@@ -57,6 +64,41 @@ export const useUserStore = defineStore({
|
||||
}
|
||||
return false
|
||||
},
|
||||
async oidc(provider, platform, browser) {
|
||||
// oidc data need to be implement
|
||||
const data = {
|
||||
deviceInfo: {
|
||||
name: navigator.userAgent, // 使用浏览器的 User-Agent 作为设备名
|
||||
os: platform, // 获取操作系统信息
|
||||
type: 'webadmin', // any vaule
|
||||
},
|
||||
id: `${platform}-${browser}`,
|
||||
op: provider, // 传入的 provider
|
||||
uuid: crypto.randomUUID(), // 自动生成 UUID
|
||||
};
|
||||
const res = await oidcAuth(data).catch(_ => false)
|
||||
if (res) {
|
||||
const { code, url } = res.data
|
||||
setCode(code)
|
||||
if (provider == 'webauth') {
|
||||
window.open(url)
|
||||
} else {
|
||||
window.location.href = url
|
||||
}
|
||||
}
|
||||
},
|
||||
async query(code) {
|
||||
const params = { "code": code, "uuid": crypto.randomUUID(), "Id": "999" }
|
||||
const res = await oidcQuery(params).catch(_ => false)
|
||||
if (res) {
|
||||
removeCode()
|
||||
useAppStore().getAppConfig()
|
||||
const userData = res.data
|
||||
this.saveUserData(userData)
|
||||
return userData
|
||||
}
|
||||
return false
|
||||
}
|
||||
},
|
||||
})
|
||||
|
||||
|
||||
Reference in New Issue
Block a user