75 lines
No EOL
1.8 KiB
TypeScript
75 lines
No EOL
1.8 KiB
TypeScript
import Taro from '@tarojs/taro'
|
|
|
|
// 授权状态接口
|
|
export interface AuthStatus {
|
|
hasPhone: boolean
|
|
hasUserInfo: boolean
|
|
phone?: string
|
|
userInfo?: any
|
|
}
|
|
|
|
// 检查用户授权状态
|
|
export const checkAuthStatus = (): AuthStatus => {
|
|
const phone = Taro.getStorageSync('userPhone')
|
|
const userInfo = Taro.getStorageSync('userInfo')
|
|
|
|
return {
|
|
hasPhone: !!phone,
|
|
hasUserInfo: !!userInfo,
|
|
phone,
|
|
userInfo
|
|
}
|
|
}
|
|
|
|
// 保存用户授权信息
|
|
export const saveAuthInfo = (data: { phone?: string, userInfo?: any }) => {
|
|
if (data.phone) {
|
|
Taro.setStorageSync('userPhone', data.phone)
|
|
}
|
|
if (data.userInfo) {
|
|
Taro.setStorageSync('userInfo', data.userInfo)
|
|
}
|
|
}
|
|
|
|
// 清除用户授权信息
|
|
export const clearAuthInfo = () => {
|
|
Taro.removeStorageSync('userPhone')
|
|
Taro.removeStorageSync('userInfo')
|
|
}
|
|
|
|
// 检查是否需要授权
|
|
export const isAuthRequired = (): boolean => {
|
|
const status = checkAuthStatus()
|
|
return !status.hasPhone || !status.hasUserInfo
|
|
}
|
|
|
|
// 获取用户显示名称
|
|
export const getUserDisplayName = (): string => {
|
|
const status = checkAuthStatus()
|
|
if (status.userInfo && status.userInfo.nickName) {
|
|
return status.userInfo.nickName
|
|
}
|
|
return '用户昵称'
|
|
}
|
|
|
|
// 获取用户头像
|
|
export const getUserAvatar = (): string => {
|
|
const status = checkAuthStatus()
|
|
if (status.userInfo && status.userInfo.avatarUrl) {
|
|
return status.userInfo.avatarUrl
|
|
}
|
|
return ''
|
|
}
|
|
|
|
// 格式化手机号显示
|
|
export const formatPhoneDisplay = (): string => {
|
|
const status = checkAuthStatus()
|
|
if (status.phone) {
|
|
// 如果是完整手机号,进行脱敏处理
|
|
if (status.phone.length === 11) {
|
|
return status.phone.replace(/(\d{3})\d{4}(\d{4})/, '$1****$2')
|
|
}
|
|
return status.phone
|
|
}
|
|
return '未授权'
|
|
}
|