mirror of
http://36.133.248.69:3088/admin/RentWeAppFront.git
synced 2026-03-15 05:12:26 +08:00
init
This commit is contained in:
77
node_modules/@dcloudio/uni-h5/src/shared/uni-id-mixin.js
generated
vendored
Normal file
77
node_modules/@dcloudio/uni-h5/src/shared/uni-id-mixin.js
generated
vendored
Normal file
@@ -0,0 +1,77 @@
|
||||
let realAtob
|
||||
|
||||
const b64 = 'ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/='
|
||||
const b64re = /^(?:[A-Za-z\d+/]{4})*?(?:[A-Za-z\d+/]{2}(?:==)?|[A-Za-z\d+/]{3}=?)?$/
|
||||
|
||||
if (typeof atob !== 'function') {
|
||||
realAtob = function (str) {
|
||||
str = String(str).replace(/[\t\n\f\r ]+/g, '')
|
||||
if (!b64re.test(str)) { throw new Error("Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.") }
|
||||
|
||||
// Adding the padding if missing, for semplicity
|
||||
str += '=='.slice(2 - (str.length & 3))
|
||||
var bitmap; var result = ''; var r1; var r2; var i = 0
|
||||
for (; i < str.length;) {
|
||||
bitmap = b64.indexOf(str.charAt(i++)) << 18 | b64.indexOf(str.charAt(i++)) << 12 |
|
||||
(r1 = b64.indexOf(str.charAt(i++))) << 6 | (r2 = b64.indexOf(str.charAt(i++)))
|
||||
|
||||
result += r1 === 64 ? String.fromCharCode(bitmap >> 16 & 255)
|
||||
: r2 === 64 ? String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255)
|
||||
: String.fromCharCode(bitmap >> 16 & 255, bitmap >> 8 & 255, bitmap & 255)
|
||||
}
|
||||
return result
|
||||
}
|
||||
} else {
|
||||
// 注意atob只能在全局对象上调用,例如:`const Base64 = {atob};Base64.atob('xxxx')`是错误的用法
|
||||
realAtob = atob
|
||||
}
|
||||
|
||||
function b64DecodeUnicode (str) {
|
||||
return decodeURIComponent(realAtob(str).split('').map(function (c) {
|
||||
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)
|
||||
}).join(''))
|
||||
}
|
||||
|
||||
function getCurrentUserInfo () {
|
||||
const token = (__PLATFORM__ === 'h5' || __PLATFORM__ === 'app-plus' ? uni : __GLOBAL__).getStorageSync('uni_id_token') || ''
|
||||
const tokenArr = token.split('.')
|
||||
if (!token || tokenArr.length !== 3) {
|
||||
return {
|
||||
uid: null,
|
||||
role: [],
|
||||
permission: [],
|
||||
tokenExpired: 0
|
||||
}
|
||||
}
|
||||
let userInfo
|
||||
try {
|
||||
userInfo = JSON.parse(b64DecodeUnicode(tokenArr[1]))
|
||||
} catch (error) {
|
||||
throw new Error('获取当前用户信息出错,详细错误信息为:' + error.message)
|
||||
}
|
||||
userInfo.tokenExpired = userInfo.exp * 1000
|
||||
delete userInfo.exp
|
||||
delete userInfo.iat
|
||||
return userInfo
|
||||
}
|
||||
|
||||
export function uniIdMixin (Vue) {
|
||||
Vue.prototype.uniIDHasRole = function (roleId) {
|
||||
const {
|
||||
role
|
||||
} = getCurrentUserInfo()
|
||||
return role.indexOf(roleId) > -1
|
||||
}
|
||||
Vue.prototype.uniIDHasPermission = function (permissionId) {
|
||||
const {
|
||||
permission
|
||||
} = getCurrentUserInfo()
|
||||
return this.uniIDHasRole('admin') || permission.indexOf(permissionId) > -1
|
||||
}
|
||||
Vue.prototype.uniIDTokenValid = function () {
|
||||
const {
|
||||
tokenExpired
|
||||
} = getCurrentUserInfo()
|
||||
return tokenExpired > Date.now()
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user