Merge remote-tracking branch 'origin/main'

main
Lei OT 8 months ago
commit 01a0569bca

@ -107,6 +107,66 @@ const useAuthStore = create(devtools((set, get) => ({
}
},
parseLoginJson: (json) => {
const { setStorage } = usingStorage()
if (json.errcode === 0 && isNotEmpty(json.result.opisn)) {
const waiServer = json.result.whatsappinfo.length > 0 ? json.result.whatsappinfo[0].wai_server : ''
setStorage(WAI_SERVER_KEY, waiServer)
const parsedUser = {
userId: json.result.opisn,
userIdStr: json.result?.accountlist
.map((acc) => {
return acc.OPI_SN
})
.join(','),
emailList: json.result?.emaillist.map(item => {
return {
opi_sn: item.opi_sn,
mat_sn: item.mat_sn,
email: item.email,
default: item.Isdefaultemail == 1,
backup: item.Isbakemail == 1,
}
}),
whatsAppBusiness: json.result.whatsappinfo.length > 0 ? json.result.whatsappinfo[0].whatsapp_waba : '',
whatsAppNo: json.result.whatsappinfo.length > 0 ? json.result.whatsappinfo[0].whatsapp_wa : '',
accountName: json.result.opicode,
username: json.result.nick,
avatarUrl: json.result.avatarUrl,
mobile: '+' + json.result.stateCode + '-' + json.result.mobile,
email: json.result.email,
openId: json.result.openId,
accountList: json.result.accountlist,
}
return parsedUser
} else { return null }
},
// 钉钉免登后获取用户信息
loginByJSAuth: async (authCode) => {
const { saveUserSession, setLoginStatus } = get()
setLoginStatus(200)
const json = await fetchJSON(
'https://p9axztuwd7x8a7.mycht.cn/dingtalk/dingtalkwork/Getusers_auth_wa',
{ authCode },
)
const parsedUser = parseLoginJson(json)
if (parsedUser) {
set(() => ({
loginUser: parsedUser,
}))
saveUserSession()
setLoginStatus(302)
} else {
setLoginStatus(403)
}
},
getPrimaryEmail: () => {
const { loginUser } = get()

@ -1,11 +1,14 @@
import { Flex, Result, Input, Button } from 'antd'
import { Flex, Result, Input, Button, Typography } from 'antd'
import { useState, useEffect } from 'react'
import * as dd from 'dingtalk-jsapi'
import useAuthStore from '@/stores/AuthStore'
//
// https://open.dingtalk.com/document/orgapp/jsapi-request-auth-code
function AuthCode() {
const loginByJSAuth = useAuthStore((state) => state.loginByJSAuth)
const loginStatus = useAuthStore((state) => state.loginStatus)
const [result, setResult] = useState('')
const [clientValue, setClientValue] = useState('dingl3jyntkazyg4coxf')
const handleRequest = () => {
@ -23,6 +26,10 @@ function AuthCode() {
})
}
const handleLogin = () => {
loginByJSAuth(result)
}
useEffect(() => {
const dingTalkPlatForm = dd.env.platform
setResult(dingTalkPlatForm)
@ -35,8 +42,10 @@ function AuthCode() {
title={clientValue}
subTitle={result}
/>
<Typography.Text>Login: {loginStatus}</Typography.Text>
<Input value={clientValue} onChange={e => setClientValue(e.currentTarget.value)} />
<Button type='primary' onClick={() => handleRequest()}>请求</Button>
<Button onClick={() => handleLogin()}>登录</Button>
</Flex>
)
}

@ -24,6 +24,7 @@ function Callback() {
if (isNotEmpty(authCode) && state === 'global-saels') {
login(authCode)
} else if (isNotEmpty(authCode) && state === 'jsapi-auth') {
// https://p9axztuwd7x8a7.mycht.cn/dingtalk/dingtalkwork/Getusers_auth_wa
// loginByJSAuth()
} else {
console.error('error: ' + error)

Loading…
Cancel
Save