import store from '@/store'

/**
 * 字符权限校验
 * @param {Array} value 校验值
 * @returns {Boolean}
 */
export function checkPermi(value) {
	if (value && value instanceof Array && value.length > 0) {
		const permissions = store.getters && store.getters.permissions
		const permissionDatas = value
		const all_permission = "*:*:*"

		const hasPermission = permissions.some(permission => {
			return all_permission === permission || permissionDatas.includes(permission)
		})

		if (!hasPermission) {
			return false
		}
		return true
	} else {
		console.error(`need roles! Like checkPermi="['system:user:add','system:user:edit']"`)
		return false
	}
}

/**
 * 角色权限校验
 * @param {Array} value 校验值
 * @returns {Boolean}
 */
export function checkRole(value) {
	if (value && value instanceof Array && value.length > 0) {
		const roles = store.getters && store.getters.roles
		const permissionRoles = value
		const super_admin = "admin"

		const hasRole = roles.some(role => {
			return super_admin === role || permissionRoles.includes(role)
		})

		if (!hasRole) {
			return false
		}
		return true
	} else {
		console.error(`need roles! Like checkRole="['admin','editor']"`)
		return false
	}
}

/**
 * 角色权限校验
 * @param {array} checkId 校验id
 * @returns {Boolean}
 */

export function checkRoleById(checkId) {
	if (!checkId) return;
	const roles = store.getters && store.getters.permissions;
	let havePermission = false;
	for (let i in checkId) {
		havePermission = roles.includes(checkId[i])
	}
	if (!havePermission) {
		uni.showToast({
			title: "当前账户无该操作权限。",
			icon: "none",
			duration: 2000
		})
	}
	return havePermission
}