提交 9ec2a554 编写于 作者: fxy060608's avatar fxy060608

feat(uni-cloud): support validateFunction

上级 cfb9ca61
dist
lib
\ No newline at end of file
packages/uni-app-vite/lib
packages/uni-app-vue/lib
packages/uni-cli-nvue/lib
packages/uni-cli-shared/lib
packages/uni-components/lib
packages/uni-mp-vue/lib
\ No newline at end of file
......@@ -8136,12 +8136,59 @@ var serviceContext = (function (vue) {
}
}
function b64DecodeUnicode(str) {
return decodeURIComponent(atob(str)
.split('')
.map(function (c) {
return '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2);
})
.join(''));
}
function getCurrentUserInfo() {
const token = uni.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;
}
function uniIdMixin(globalProperties) {
globalProperties.uniIDHasRole = function (roleId) {
const { role } = getCurrentUserInfo();
return role.indexOf(roleId) > -1;
};
globalProperties.uniIDHasPermission = function (permissionId) {
const { permission } = getCurrentUserInfo();
return this.uniIDHasRole('admin') || permission.indexOf(permissionId) > -1;
};
globalProperties.uniIDTokenValid = function () {
const { tokenExpired } = getCurrentUserInfo();
return tokenExpired > Date.now();
};
}
function initApp(app) {
const appConfig = app._context.config;
if (isFunction(app._component.onError)) {
appConfig.errorHandler = errorHandler;
}
const globalProperties = appConfig.globalProperties;
uniIdMixin(globalProperties);
{
globalProperties.$set = set;
globalProperties.$applyOptions = applyOptions;
......
......@@ -3,6 +3,7 @@ const {
COMMON_EXCLUDE,
uniViteInjectPlugin,
} = require('@dcloudio/uni-cli-shared')
const { uniValidateFunctionPlugin } = require('./validateFunction')
/**
* @type {import('vite').Plugin}
*/
......@@ -115,4 +116,5 @@ module.exports = [
exclude: [...COMMON_EXCLUDE],
uniCloud: ['@dcloudio/uni-cloud', 'default'],
}),
uniValidateFunctionPlugin(),
]
function replaceModuleExports(code) {
return code.replace(/module\.exports\s*=/, 'export default ')
}
module.exports = {
uniValidateFunctionPlugin() {
return {
name: 'vite:uni-cloud-vf',
enforce: 'pre',
transform(code, id) {
if (id.includes('validator/validateFunction')) {
return replaceModuleExports(code)
}
},
}
},
}
......@@ -6560,12 +6560,54 @@ function errorHandler(err, instance, info) {
invokeHook(app.$vm, uniShared.ON_ERROR, err);
}
}
function b64DecodeUnicode(str) {
return decodeURIComponent(atob(str).split("").map(function(c) {
return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
}).join(""));
}
function getCurrentUserInfo() {
const token = uni.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("\u83B7\u53D6\u5F53\u524D\u7528\u6237\u4FE1\u606F\u51FA\u9519\uFF0C\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F\u4E3A\uFF1A" + error.message);
}
userInfo.tokenExpired = userInfo.exp * 1e3;
delete userInfo.exp;
delete userInfo.iat;
return userInfo;
}
function uniIdMixin(globalProperties) {
globalProperties.uniIDHasRole = function(roleId) {
const { role } = getCurrentUserInfo();
return role.indexOf(roleId) > -1;
};
globalProperties.uniIDHasPermission = function(permissionId) {
const { permission } = getCurrentUserInfo();
return this.uniIDHasRole("admin") || permission.indexOf(permissionId) > -1;
};
globalProperties.uniIDTokenValid = function() {
const { tokenExpired } = getCurrentUserInfo();
return tokenExpired > Date.now();
};
}
function initApp$1(app) {
const appConfig = app._context.config;
if (shared.isFunction(app._component.onError)) {
appConfig.errorHandler = errorHandler;
}
const globalProperties = appConfig.globalProperties;
uniIdMixin(globalProperties);
{
globalProperties.$set = set;
globalProperties.$applyOptions = applyOptions;
......
......@@ -13113,12 +13113,54 @@ function errorHandler(err, instance2, info) {
invokeHook(app.$vm, ON_ERROR, err);
}
}
function b64DecodeUnicode(str) {
return decodeURIComponent(atob(str).split("").map(function(c) {
return "%" + ("00" + c.charCodeAt(0).toString(16)).slice(-2);
}).join(""));
}
function getCurrentUserInfo() {
const token = uni.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("\u83B7\u53D6\u5F53\u524D\u7528\u6237\u4FE1\u606F\u51FA\u9519\uFF0C\u8BE6\u7EC6\u9519\u8BEF\u4FE1\u606F\u4E3A\uFF1A" + error.message);
}
userInfo.tokenExpired = userInfo.exp * 1e3;
delete userInfo.exp;
delete userInfo.iat;
return userInfo;
}
function uniIdMixin(globalProperties) {
globalProperties.uniIDHasRole = function(roleId) {
const { role } = getCurrentUserInfo();
return role.indexOf(roleId) > -1;
};
globalProperties.uniIDHasPermission = function(permissionId) {
const { permission } = getCurrentUserInfo();
return this.uniIDHasRole("admin") || permission.indexOf(permissionId) > -1;
};
globalProperties.uniIDTokenValid = function() {
const { tokenExpired } = getCurrentUserInfo();
return tokenExpired > Date.now();
};
}
function initApp$1(app) {
const appConfig = app._context.config;
if (isFunction(app._component.onError)) {
appConfig.errorHandler = errorHandler;
}
const globalProperties = appConfig.globalProperties;
uniIdMixin(globalProperties);
{
globalProperties.$set = set;
globalProperties.$applyOptions = applyOptions;
......
import path from 'path'
import { Plugin, UserConfig } from 'vite'
import { Plugin } from 'vite'
import {
// initPreContext,
......
......@@ -7,10 +7,10 @@ export function createResolve(
_config: UserConfig
): UserConfig['resolve'] {
return {
alias: {
'@': '',
'~@': '', // src: url('~@/static/uni.ttf') format('truetype');
},
// alias: {
// '@': '',
// '~@': '', // src: url('~@/static/uni.ttf') format('truetype');
// },
extensions: ['.mjs', '.js', '.ts', '.jsx', '.tsx', '.json'].concat(
EXTNAME_VUE
),
......
......@@ -14,6 +14,7 @@ import { createConfigResolved } from './configResolved'
import { createConfigureServer } from './configureServer'
import { initExtraPlugins } from './utils'
import { initPluginVueOptions } from './vue'
import { createResolveId } from './resolveId'
const debugUni = debug('vite:uni:plugin')
......@@ -92,6 +93,7 @@ export default function uniPlugin(
plugins.push({
name: 'vite:uni',
config: createConfig(options, uniPlugins),
resolveId: createResolveId(options),
configResolved: createConfigResolved(options),
configureServer: createConfigureServer(options),
})
......
import slash from 'slash'
import { Plugin } from 'vite'
import { VitePluginUniResolvedOptions } from '..'
export function createResolveId(
options: VitePluginUniResolvedOptions
): Plugin['resolveId'] {
const inputDir = slash(options.inputDir)
return function (id) {
if (id.startsWith('@/')) {
return inputDir + id.substr(1)
} else if (id.startsWith('~@/')) {
return inputDir + id.substr(2)
}
}
}
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册