This commit is contained in:
tanyp 2023-04-24 11:55:32 +08:00
parent b9ca3ba3cb
commit cb65ad215a
9 changed files with 94 additions and 8 deletions

File diff suppressed because one or more lines are too long

View File

@ -13,6 +13,10 @@ export function setToken(token:string) {
}
export function removeToken() {
sessionStorage.removeItem(tokenKey);
global.user = {
authorities: [],
info: {},
}
}
// 菜单信息
@ -77,7 +81,11 @@ export async function getUserInfo() {
method: 'get'
}).then((res:any) => {
if(res.data.result){
global.user.info = res.data.result
// 用户信息
let user = res.data.result
global.user.info = user
// 权限信息
global.user.authorities = user.authorities
}
})
}

View File

@ -8,6 +8,7 @@ import * as ElIcons from '@element-plus/icons-vue'
import zhCn from 'element-plus/es/locale/lang/zh-cn'
import 'uno.css'
import globalProperties from './utils/globalProperties'
import hasPermission from './utils/hasPermission'
const app = createApp(App)
app.use(globalProperties)
@ -19,4 +20,5 @@ app.use(ElementPlus,{
for (const icon in ElIcons) {
app.component(icon, (ElIcons as any)[icon])
}
app.use(hasPermission)
app.mount('#app');

View File

@ -4,6 +4,7 @@ export default {
baseApi: import.meta.env.VITE_BASE_API,
cardShadow: 'never',
user: {
info: {}
info: {},
authorities: [],
},
}

View File

@ -0,0 +1,17 @@
// 权限
const hasPermission = {
install(app:any) {
app.directive('permission', {
mounted(el:any, binding:any) {
if (binding.value) {
const permissionList = app.config.globalProperties.$global.user.authorities
if (permissionList && permissionList.length && !permissionList.includes(binding.value)) {
el.remove()
}
}
}
})
}
}
export default hasPermission

View File

@ -221,14 +221,14 @@
<Table :data="table.tableData" :column="table.tableTitle" :operation="table.operation" :page="table.page" :loading="table.loading"
@onSizeChange="onSizeChange" @onCurrentChange="onCurrentChange" @onSwitchChange="onSwitchChange">
<template #search>
<div><el-button type="primary" @click="onAddRole">添加</el-button></div>
<div><el-button v-permission="'user:save'" type="primary" @click="onAddRole">添加</el-button></div>
<div><el-input v-model="searchForm.username" placeholder="请输入名称"></el-input></div>
<div><el-button @click="onRefresh" icon="RefreshRight" circle></el-button></div>
<div><el-button @click="onSearch" type="primary" icon="Search">查询</el-button></div>
</template>
<template #column="scope">
<el-button @click="onEdit(scope)" type='primary' text='primary' style="color:var(--edit); padding:0;">编辑</el-button>
<el-button @click="onDelete(scope)" type='primary' text='primary' style="color:var(--delete); padding:0;">删除</el-button>
<el-button @click="onEdit(scope)" v-permission="'user:update'" type='primary' link style="color:var(--edit); padding:0;">编辑</el-button>
<el-button @click="onDelete(scope)" v-permission="'user:delete'" type='primary' link style="color:var(--delete); padding:0;">删除</el-button>
</template>
</Table>
<el-dialog title="用户信息" v-model="form.userVisible" :show-close="false" width="50%">

View File

@ -7,6 +7,8 @@ import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;
import java.util.List;
/**
* @ClassName UserAuthVo.java
* @ClassPath com.tansci.domain.vo.UserAuthVo.java
@ -39,4 +41,7 @@ public class UserAuthVo {
@ApiModelProperty(value = "邮箱")
private String email;
@ApiModelProperty(value = "权限code")
private List<String> authorities;
}

View File

@ -3,6 +3,10 @@ package com.tansci.mapper;
import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import com.tansci.domain.SysUser;
import org.apache.ibatis.annotations.Mapper;
import org.apache.ibatis.annotations.Param;
import org.apache.ibatis.annotations.Select;
import java.util.List;
/**
* @ClassName SysUserMapper.java
@ -13,4 +17,15 @@ import org.apache.ibatis.annotations.Mapper;
**/
@Mapper
public interface SysUserMapper extends BaseMapper<SysUser> {
@Select("SELECT DISTINCT sm.permission\n" +
"FROM sys_menu sm\n" +
"right JOIN sys_role_menu srm ON sm.id = srm.menu_id\n" +
"right JOIN sys_user_role sur ON sur.role_id = srm.role_id\n" +
"right JOIN sys_user su ON su.id = sur.user_id AND su.id = #{userId} AND su.is_del = 0\n" +
"WHERE sm.is_del = 0\n" +
"AND sm.permission != ''\n" +
"AND sm.permission IS NOT NULL")
List<String> authorities(@Param("userId") String userId);
}

View File

@ -80,12 +80,15 @@ public class SysUserServiceImpl extends ServiceImpl<SysUserMapper, SysUser> impl
@Override
public UserAuthVo info() {
SysUser user = this.baseMapper.selectById(String.valueOf(StpUtil.getLoginId()));
// 获取当前用户权限code
List<String> authorities = this.baseMapper.authorities(String.valueOf(StpUtil.getLoginId()));
return UserAuthVo.builder()
.username(user.getUsername())
.nickname(user.getNickname())
.type(user.getType())
.phone(user.getPhone())
.email(user.getEmail())
.authorities(authorities)
.build();
}