Browse Source

权限配置页面开发+外链默认没有密码登录功能

master
安虹睿 1 year ago
parent
commit
3eaacbbf18
  1. 3
      Code/Fe/public/config.js
  2. 2
      Code/Fe/src/App.vue
  3. 112
      Code/Fe/src/api/wms-auth.js
  4. 93
      Code/Fe/src/permission.js
  5. 7
      Code/Fe/src/store/modules/definition.js
  6. 18
      Code/Fe/src/store/modules/permission.js
  7. 100
      Code/Fe/src/store/modules/user.js
  8. 320
      Code/Fe/src/views/menuList/AbpIdentityMarkRoles.vue

3
Code/Fe/public/config.js

@ -2,11 +2,14 @@
window.SITE_CONFIG['baseApi'] = 'http://dev.ccwin-in.com:60068' window.SITE_CONFIG['baseApi'] = 'http://dev.ccwin-in.com:60068'
// window.SITE_CONFIG['baseApi'] = 'http://192.168.0.190:60068' // window.SITE_CONFIG['baseApi'] = 'http://192.168.0.190:60068'
window.SITE_CONFIG['authApi'] = 'http://dev.ccwin-in.com:60068' window.SITE_CONFIG['authApi'] = 'http://dev.ccwin-in.com:60068'
window.SITE_CONFIG['loginApi'] = 'http://dev.ccwin-in.com:60065'
window.SITE_CONFIG['businessApi'] = 'http://dev.ccwin-in.com:10097' window.SITE_CONFIG['businessApi'] = 'http://dev.ccwin-in.com:10097'
//是否登录配置信息【loginName】 //是否登录配置信息【loginName】
window.SITE_CONFIG['isConfigLogin'] = false window.SITE_CONFIG['isConfigLogin'] = false
//如果【isConfigLogin】为true则使用【loginName】登录 //如果【isConfigLogin】为true则使用【loginName】登录
window.SITE_CONFIG['configLoginName'] = 'admin' window.SITE_CONFIG['configLoginName'] = 'admin'
// 默认登录密码(isConfigLogin为true或者链接参数存在loginName使用)
window.SITE_CONFIG['configLoginPass'] = '1q2w3E*'
// 是否单页面(不显示菜单头部等部分) // 是否单页面(不显示菜单头部等部分)
window.SITE_CONFIG['isSinglePage'] = false window.SITE_CONFIG['isSinglePage'] = false
// 项目配置 // 项目配置

2
Code/Fe/src/App.vue

@ -10,10 +10,12 @@ export default {
} }
localStorage.setItem('baseApi',window.SITE_CONFIG['baseApi']) localStorage.setItem('baseApi',window.SITE_CONFIG['baseApi'])
localStorage.setItem('authApi',window.SITE_CONFIG['authApi']) localStorage.setItem('authApi',window.SITE_CONFIG['authApi'])
localStorage.setItem('loginApi',window.SITE_CONFIG['loginApi'])
localStorage.setItem('userApi',window.SITE_CONFIG['userApi']) localStorage.setItem('userApi',window.SITE_CONFIG['userApi'])
localStorage.setItem('businessApi',window.SITE_CONFIG['businessApi']) localStorage.setItem('businessApi',window.SITE_CONFIG['businessApi'])
localStorage.setItem('isConfigLogin',window.SITE_CONFIG['isConfigLogin']) localStorage.setItem('isConfigLogin',window.SITE_CONFIG['isConfigLogin'])
localStorage.setItem('configLoginName',window.SITE_CONFIG['configLoginName']) localStorage.setItem('configLoginName',window.SITE_CONFIG['configLoginName'])
localStorage.setItem('configLoginPass',window.SITE_CONFIG['configLoginPass'])
localStorage.setItem('isSinglePage',window.SITE_CONFIG['isSinglePage']) localStorage.setItem('isSinglePage',window.SITE_CONFIG['isSinglePage'])
localStorage.setItem('appClientId',window.SITE_CONFIG['appClientId']) localStorage.setItem('appClientId',window.SITE_CONFIG['appClientId'])
localStorage.setItem('appClientScope',window.SITE_CONFIG['appClientScope']) localStorage.setItem('appClientScope',window.SITE_CONFIG['appClientScope'])

112
Code/Fe/src/api/wms-auth.js

@ -1,13 +1,6 @@
import request from '@/utils/request' import request from '@/utils/request'
let authApi = localStorage.getItem('authApi') + '/api' let authApi = localStorage.getItem('authApi') + '/api'
let loginApi = localStorage.getItem('loginApi')
export function login(data) {
return request({
url: authApi + '/account/login',
method: 'post',
data
})
}
export function logout() { export function logout() {
return request({ return request({
@ -18,10 +11,19 @@ export function logout() {
// faster-new // faster-new
// 登录
export function login(data) {
return request({
url: loginApi + '/CustAccount/login',
method: 'post',
data
})
}
// 获取token // 获取token
export function token(data) { export function token(data) {
return request({ return request({
url: localStorage.getItem('authApi') + '/connect/token', url: authApi + '/connect/token',
method: 'post', method: 'post',
headers: { headers: {
'Content-Type': 'application/x-www-form-urlencoded' 'Content-Type': 'application/x-www-form-urlencoded'
@ -30,10 +32,10 @@ export function token(data) {
}) })
} }
// 获取用户信息(单点登录) // 通过token获取用户信息(单点登录)
export function getUsersByToken(token) { export function getUsersByToken(token) {
return request({ return request({
url: localStorage.getItem('oidcLogin_url') + '/connect/userinfo', url: loginApi + '/connect/userinfo',
method: 'get', method: 'get',
Token:token Token:token
}) })
@ -78,7 +80,7 @@ export async function getApiDefinition() {
}) })
} }
// *************权限页面维护************* // *************权限Roles页面维护*************
//获取列表 //获取列表
export function getPageListRoles(data) { export function getPageListRoles(data) {
return request({ return request({
@ -106,6 +108,23 @@ export function postCreateRoles(data) {
}) })
} }
//编辑角色
export function postUpdateRoles(data, id) {
return request({
url: authApi+'/identity/roles/' + id,
method: 'put',
data
})
}
//删除角色
export function postDeleteRoles(id) {
return request({
url: authApi + '/identity/roles/' + id,
method: 'delete',
})
}
//保存权限模板 //保存权限模板
export function savePermissionsRoles(URL, data) { export function savePermissionsRoles(URL, data) {
return request({ return request({
@ -114,3 +133,72 @@ export function savePermissionsRoles(URL, data) {
data data
}) })
} }
// 更新权限
export function updatePermissionsGranted(pname,pkey) {
return request({
url: authApi + `/permissions/get-isGranted?name=demox&providerName=${pname}&providerKey=${pkey}`,
method: 'post',
})
}
// *************用户Users页面维护*************
//获取全部用户信息
export function getPageListUsers(data) {
return request({
url: authApi + '/identity/users',
method: 'get',
params: data
})
}
//新建用户
export function postCreateUser(data) {
return request({
url: authApi + '/identity/users',
method: 'post',
data
})
}
//编辑用户
export function postUpdateUser(data, id) {
return request({
url: authApi + '/identity/users/' + id,
method: 'put',
data
})
}
//删除用户
export function postDeleteUser(id) {
return request({
url: authApi + '/identity/users/' + id,
method: 'delete',
})
}
// 获取当前用户的角色
export function usersroles() {
return request({
url: authApi + '/identity/users/assignable-roles',
method: 'get'
})
}
//获取当前角色
export function getusersID(data) {
return request({
url: authApi + '/identity/users/' + data + '/roles',
method: 'get'
})
}
//重置密码
export function resetPassword(id) {
return request({
url: authApi + '/identity/users/reset-password/' + id,
method: 'post'
})
}

93
Code/Fe/src/permission.js

@ -14,7 +14,7 @@ NProgress.configure({
const whiteList = ['/login','/callback'] // no redirect whitelist const whiteList = ['/login','/callback'] // no redirect whitelist
const noUserMsg = '获取用户信息失败,请重新登录 !' const noUserMsg = '获取用户信息失败,请重新登录 !'
const getErrMsg = '数据获取失败 !' const getErrMsg = '数据获取失败 !'
const hasToken = getToken()
// 跳转登录页 // 跳转登录页
const pageToLogin = (to, from, next) => { const pageToLogin = (to, from, next) => {
@ -24,7 +24,8 @@ const pageToLogin = (to, from, next) => {
NProgress.done() NProgress.done()
} else { } else {
// other pages that do not have permission to access are redirected to the login page. // other pages that do not have permission to access are redirected to the login page.
removeToken() // removeToken()
store.dispatch('user/resetToken')
next(`/login?redirect=${to.path}`) next(`/login?redirect=${to.path}`)
NProgress.done() NProgress.done()
} }
@ -32,27 +33,32 @@ const pageToLogin = (to, from, next) => {
// 首次进入页面加载数据处理 // 首次进入页面加载数据处理
const toPageInit = async (to, from, next) => { const toPageInit = async (to, from, next) => {
// const hasToken = getToken()
// 获取用户信息 // // 获取用户信息
// let _userName = localStorage.getItem("isLoginTokenName")//使用用户名获取 // // let _userName = localStorage.getItem("isLoginTokenName")//使用用户名获取
// if(_userName && _userName != null && (!store.getters.currentUserInfo || store.getters.currentUserInfo.length <= 0)){ // // if(_userName && _userName != null && (!store.getters.currentUserInfo || store.getters.currentUserInfo.length <= 0)){
// await store.dispatch('user/getUserInfo',_userName)//使用用户名获取 // // await store.dispatch('user/getUserInfo',_userName)//使用用户名获取
let _user_access = hasToken.substring(hasToken.indexOf(" ") + 1,hasToken.length) // let _user_access = hasToken.substring(hasToken.indexOf(" ") + 1,hasToken.length)
if(hasToken && hasToken != null && (!store.getters.currentUserInfo || store.getters.currentUserInfo.length <= 0)){ // if(hasToken && hasToken != null && (!store.getters.currentUserInfo || store.getters.currentUserInfo.length <= 0)){
await store.dispatch('user/getUserInfoByToken',_user_access) // await store.dispatch('user/getUserInfoByToken',_user_access)
.then(()=>{ // .then(()=>{
toNextHandle(to, from, next) // toNextHandle(to, from, next)
}) // })
.catch(()=>{ // .catch(()=>{
// todo-fast:接口恢复后更改 // // todo-fast:接口恢复后更改
// toNextHandle(to, from, next)
// // Message.error(noUserMsg)
// // pageToLogin(to, from, next)
// })
// return
// }
if(getToken()){
toNextHandle(to, from, next) toNextHandle(to, from, next)
// Message.error(noUserMsg) }else{
// pageToLogin(to, from, next) Message.error('暂无token,请重新登录')
}) store.dispatch("user/logout")
return
} }
toNextHandle(to, from, next)
} }
// 跳转处理 // 跳转处理
@ -67,13 +73,14 @@ const toNextHandle = async (to, from, next) => {
}) })
} }
// 获取菜单数据 // 获取菜单数据 permission_routes
if(!store.getters.permission_routes || store.getters.permission_routes.length <= 0){ if(!store.getters.addRoutes || store.getters.addRoutes.length <= 0){
isFresh = true isFresh = true
await store.dispatch('permission/getApiColumnsNames') await store.dispatch('permission/getAppConfig')
.then(res=>{ .then(res=>{
// 没有权限(token失效处理) // 没有权限(token失效处理)
if(!res || res.length <=0){ if(!res || res.length <=0){
Message.error('用户无权限或者token失效,请重新登录')
store.dispatch("user/logout") store.dispatch("user/logout")
} }
}) })
@ -106,6 +113,8 @@ router.beforeEach(async (to, from, next) => {
// set page title // set page title
document.title = getPageTitle() document.title = getPageTitle()
const hasToken = getToken()
// 判断是否自动登录 // 判断是否自动登录
let isAutoLogin = JSON.parse(localStorage.getItem('isConfigLogin')) || to.query.loginName let isAutoLogin = JSON.parse(localStorage.getItem('isConfigLogin')) || to.query.loginName
@ -131,25 +140,27 @@ router.beforeEach(async (to, from, next) => {
console.log('没有token,是登录页,pageToLogin') console.log('没有token,是登录页,pageToLogin')
pageToLogin(to, from, next) pageToLogin(to, from, next)
} else { } else {
// todo:自动登录,即没有密码登录情况处理 // 如果有单点登录方式使用下方配置
mgr.signinRedirect(); //执行重定向 // mgr.signinRedirect(); //执行重定向
if(isAutoLogin){
// if(isAutoLogin){ let _username = localStorage.getItem("isConfigLogin") && localStorage.getItem("isConfigLogin") != 'false' ? localStorage.getItem("configLoginName") : to.query.loginName
// let _username = localStorage.getItem("isConfigLogin") && localStorage.getItem("isConfigLogin") != 'false' ? localStorage.getItem("configLoginName") : to.query.loginName await store.dispatch('user/login', {
// await store.dispatch('user/loginOnlyName', {username:_username}) username:_username,
// .then(()=>{ password:localStorage.getItem("configLoginPass")
// toPageInit(to, from, next) })
// }) .then(()=>{
// .catch(()=>{ toPageInit(to, from, next)
// // todo-fast:接口恢复后更改 })
// toNextHandle(to, from, next) .catch(()=>{
// // Message.error(noUserMsg) // todo-fast:接口恢复后更改
// // pageToLogin(to, from, next) toNextHandle(to, from, next)
// }) // Message.error(noUserMsg)
// }else{
// console.log('没有token,不是登录页,不是自动登录,pageToLogin')
// pageToLogin(to, from, next) // pageToLogin(to, from, next)
// } })
}else{
console.log('没有token,不是登录页,不是自动登录,pageToLogin')
pageToLogin(to, from, next)
}
} }
} }
}) })

7
Code/Fe/src/store/modules/definition.js

@ -170,6 +170,13 @@ const actions = {
reject(err) reject(err)
}) })
}) })
},
// 重置配置信息
resetDefinition({ commit }) {
commit('SET_ENUM_LIST', [])
commit('SET_COLUMZH_LIST', null)
commit('SET_DTOCOLUMN_TYPES', [])
commit('SET_API_ACTIONS', [])
} }
} }

18
Code/Fe/src/store/modules/permission.js

@ -30,9 +30,6 @@ const mutations = {
SET_TABLESNAME: (state, data) => { SET_TABLESNAME: (state, data) => {
state.tablesName = data state.tablesName = data
}, },
SET_AbpIdentity: (state, data) => {
state.abpIdentityName = data
}
} }
/** /**
* 静态路由懒加载 * 静态路由懒加载
@ -136,14 +133,20 @@ export function initTreeMenusHandle(tree, list,first) {
} }
const actions = { const actions = {
// 设置权限 // 设置权限
setUserRoles({commit},data){ resetUserRoles({commit}){
commit('SET_ROLES', data) commit('SET_ROUTES',[])
commit('SET_ROLES', [])
commit('SET_TABLESNAME', null)
}, },
getApiColumnsNames({
// 获取菜单数据
getAppConfig({
commit commit
}, userId) { }, userId) {
return new Promise(resolve => { return new Promise(resolve => {
getDefinitionMenu(true).then(res => { getDefinitionMenu(true).then(res => {
// 存储当前用户信息
store.dispatch('user/setUserInfo',res.currentUser)
let roles_arr = [] let roles_arr = []
for(let r in res.auth.grantedPolicies){ for(let r in res.auth.grantedPolicies){
if(res.auth.grantedPolicies[r])roles_arr.push(r) if(res.auth.grantedPolicies[r])roles_arr.push(r)
@ -166,8 +169,6 @@ const actions = {
} }
// 存储所有的表名 // 存储所有的表名
commit('SET_TABLESNAME', _menuList) commit('SET_TABLESNAME', _menuList)
// 存储身份标识
commit('SET_AbpIdentity', _AbpIdentity)
// 数据模拟,todo-new:接口获取 // 数据模拟,todo-new:接口获取
let _treeMenusAll = null//树形菜单 let _treeMenusAll = null//树形菜单
// _treeMenusAll = [ // _treeMenusAll = [
@ -249,6 +250,7 @@ const actions = {
}) })
}) })
}, },
} }
export default { export default {

100
Code/Fe/src/store/modules/user.js

@ -1,5 +1,6 @@
import { import {
token, token,
login,
logout, logout,
getUsersByToken, getUsersByToken,
getUsersByUserName getUsersByUserName
@ -12,7 +13,6 @@ import {
import router, { import router, {
resetRouter resetRouter
} from '@/router' } from '@/router'
import qs from 'qs'
import store from '@/store' import store from '@/store'
import { mgr } from "@/oidc/oidc-client"; import { mgr } from "@/oidc/oidc-client";
@ -31,15 +31,22 @@ const mutations = {
} }
// 登录(token)成功后处理 // 登录(token)成功后处理
const loginSuccess = (res,username,resolve,reject) => { const loginSuccess = (type,token,username,resolve,reject) => {
setToken(res.token_type + ' ' + res.access_token) let _type = type ? type : 'Bearer'
setToken(_type + ' ' + token)
localStorage.setItem('isLoginTokenName',username) localStorage.setItem('isLoginTokenName',username)
store.dispatch('user/getUserInfo',username).then(()=>{
resolve() resolve()
}).catch(()=>{ // store.dispatch('user/getUserInfoByToken',token).then(()=>{
reject() // resolve()
}) // }).catch(()=>{
// reject()
// })
// store.dispatch('user/getUserInfo',username).then(()=>{
// resolve()
// }).catch(()=>{
// reject()
// })
} }
// 单点登录(token)成功后处理 // 单点登录(token)成功后处理
@ -54,6 +61,11 @@ const loginSuccessBySignin = (res,resolve, reject,commit) => {
} }
const actions = { const actions = {
// 设置当前用户
setUserInfo({commit},data){
commit('SET_USERINFO',data)
},
// 登录,需要密码 // 登录,需要密码
login({ login({
commit, commit,
@ -63,50 +75,35 @@ const actions = {
username, username,
} = userInfo } = userInfo
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
let params = qs.stringify({ // let params = qs.stringify({
password: password, // password: password,
username: username, // username: username,
client_id:localStorage.getItem('appClientId'), // client_id:localStorage.getItem('appClientId'),
scopes:localStorage.getItem('appClientScope'), // scopes:localStorage.getItem('appClientScope'),
grant_type:'password' // grant_type:'password'
}); // });
token(params).then(response => { let params= {
if (response.access_token == null) { name:username,
reject() password: password
} else {
loginSuccess(response,username,resolve,reject,commit)
} }
}).catch(error => { login(params).then(response => {
reject(error) if (response && response.token) {
}) loginSuccess(null,response.token,username,resolve,reject,commit)
})
},
// 自动登录,不需要密码 todo:更改接口,去掉password
loginOnlyName({
commit,
}, userInfo) {
const {
password,
username,
} = userInfo
return new Promise((resolve, reject) => {
let params = qs.stringify({
password: '1q2w3E*',
username: username,
client_id:localStorage.getItem('appClientId'),
scopes:localStorage.getItem('appClientScope'),
grant_type:'password'
});
token(params).then(response => {
if (response.access_token == null) {
reject()
} else { } else {
loginSuccess(response,username,resolve,reject,commit) reject()
} }
}).catch(error => { }).catch(error => {
reject(error) reject(error)
}) })
// token(params).then(response => {
// if (response.access_token == null) {
// reject()
// } else {
// loginSuccess(response,username,resolve,reject,commit)
// }
// }).catch(error => {
// reject(error)
// })
}) })
}, },
@ -141,10 +138,9 @@ const actions = {
}) { }) {
return new Promise((resolve, reject) => { return new Promise((resolve, reject) => {
// logout().then(() => { // logout().then(() => {
dispatch('permission/setUserRoles',[]) dispatch('permission/resetUserRoles',null,{root:true})
dispatch('tagsView/delAllViews', null, { dispatch('definition/resetDefinition',null,{root:true})
root: true dispatch('tagsView/delAllViews', null, {root: true}).then(()=>{
}).then(()=>{
removeToken() removeToken()
resetRouter() resetRouter()
resolve() resolve()
@ -164,7 +160,7 @@ const actions = {
commit commit
}) { }) {
return new Promise(resolve => { return new Promise(resolve => {
commit('SET_ROLES', []) // commit('SET_ROLES', [])
localStorage.setItem('isLoginTokenName',null) localStorage.setItem('isLoginTokenName',null)
removeToken() removeToken()
resolve() resolve()
@ -200,7 +196,7 @@ const actions = {
.then(info=>{ .then(info=>{
if(info){ if(info){
let _info = info let _info = info
_info.userInfo = info.preferred_username _info.name = info.preferred_username
_info.id = info.sub _info.id = info.sub
commit('SET_USERINFO', _info) commit('SET_USERINFO', _info)
resolve(_info) resolve(_info)

320
Code/Fe/src/views/menuList/AbpIdentityMarkRoles.vue

@ -45,16 +45,9 @@
prop="name" prop="name"
label="角色名" label="角色名"
sortable="custom" sortable="custom"
width="180" :align="'left'"
align="left"
/> />
<el-table-column <el-table-column label="操作" :align="'center'" width="150">
prop="extraProperties.Description"
label="角色描述"
align="left"
:show-overflow-tooltip="true"
/>
<el-table-column label="操作" align="center" width="150">
<template slot-scope="scope"> <template slot-scope="scope">
<el-button <el-button
type="text" type="text"
@ -73,8 +66,6 @@
> >
</template> </template>
</el-table-column> </el-table-column>
<!-- <el-table-column prop="address" label="创建时间" />
<el-table-column prop="address" label="编辑" /> -->
</el-table> </el-table>
</div> </div>
<div class="Footer"> <div class="Footer">
@ -97,7 +88,11 @@
> >
</div> </div>
</el-col> </el-col>
<el-col :md="8" v-permission="['AbpIdentity.Roles.Update']"> <el-col
v-loading="treeLoading"
:md="8"
v-permission="['AbpIdentity.Roles.Update']"
>
<el-card class="box-card" shadow="never"> <el-card class="box-card" shadow="never">
<div slot="header" class="clearfix" style="height: 20px"> <div slot="header" class="clearfix" style="height: 20px">
<el-tooltip <el-tooltip
@ -109,24 +104,24 @@
<span class="role-span">{{name}}角色模块权限</span> <span class="role-span">{{name}}角色模块权限</span>
</el-tooltip> </el-tooltip>
<el-button <el-button
:loading="savePerLoading" :loading="treeLoading"
:disabled="multipleSelection.length != 1" :disabled="multipleSelection.length != 1"
icon="el-icon-check" icon="el-icon-check"
size="mini" size="mini"
style="float: right; padding: 6px 9px" style="float: right; padding: 6px 9px"
type="primary" type="primary"
@click="savePer" @click="savePer"
>保存 v-permission="['AbpIdentity.Roles.ManagePermissions']"
</el-button> v-if="name != 'admin'"
>保存</el-button>
</div> </div>
<el-tree <el-tree
ref="tree" ref="tree"
v-loading="treeLoading"
:check-strictly="false" :check-strictly="false"
:data="permissionsData" :data="permissionsData"
:props="defaultProps" :props="defaultProps"
show-checkbox show-checkbox
node-key="id" node-key="name"
class="permission-tree" class="permission-tree"
/> />
</el-card> </el-card>
@ -149,16 +144,6 @@
<el-form-item label="名称" prop="name"> <el-form-item label="名称" prop="name">
<el-input v-model="form.name" style="width: 380px" maxlength="23" /> <el-input v-model="form.name" style="width: 380px" maxlength="23" />
</el-form-item> </el-form-item>
<el-form-item label="描述">
<el-input
type="textarea"
:rows="2"
placeholder="请输入描述信息"
style="width: 380px"
v-model="form.extraProperties.Description"
>
</el-input>
</el-form-item>
</el-form> </el-form>
<div slot="footer" class="dialog-footer"> <div slot="footer" class="dialog-footer">
<el-button @click="resetform"> </el-button> <el-button @click="resetform"> </el-button>
@ -170,13 +155,12 @@
<script> <script>
import { import {
getPageListRoles, getPageListRoles,
getpermissionsRoles, getPermissionsRoles,
menuPermissions, savePermissionsRoles,
updatePermissionsGranted,
postCreateRoles, postCreateRoles,
postUpdateRoles, postUpdateRoles,
postDeleteRoles, postDeleteRoles,
putpermissionsRoles,
saveOrUpdateDescribe
} from "@/api/wms-auth"; } from "@/api/wms-auth";
import permission from "@/utils/permission/index"; import permission from "@/utils/permission/index";
import searchNormal from "@/components/searchNormal/index.vue" import searchNormal from "@/components/searchNormal/index.vue"
@ -192,8 +176,6 @@
URL: 'identity/roles', URL: 'identity/roles',
// //
name: '', name: '',
//
rolesAll: [],
// //
dialogVisible: false, dialogVisible: false,
// //
@ -210,12 +192,6 @@
pagesize: 20, pagesize: 20,
Sorting: "", Sorting: "",
}, },
// Thecurrent: '',
//
//
// value1: '',
//
// roleList: [],
//ID //ID
usersId: "", usersId: "",
// //
@ -225,14 +201,9 @@
name: "", name: "",
isDefault: true, isDefault: true,
isPublic: true, isPublic: true,
extraProperties: {
Description: "",
},
}, },
// table // table
tableLoading:false, tableLoading:false,
//
savePerLoading: false,
// //
treeLoading: false, treeLoading: false,
// //
@ -241,7 +212,7 @@
permissionsData: [], permissionsData: [],
defaultProps: { defaultProps: {
children: "children", children: "children",
label: "name", label: "displayName",
}, },
// //
params: { params: {
@ -269,45 +240,6 @@
this.pageList(); this.pageList();
}, },
methods: { methods: {
//sort () sort
sortData(sort){
return function(a,b){
const val1 = a[sort];
const val2 = b[sort];
return val1 - val2;
}
},
//
initTreeData(list,code = ""){
const children = []
// list,.parentCode==code,children
list.forEach(item => {
if (item['parentCode'] == code) {
// children.push(item)
children.push(
{
id: item.id,
displayName: item.permission,
name: item.name,
parentCode: item.parentCode,
code: item.code,
sort: item.sort,
children: []
}
)
//
children.find(findItem => findItem.id == item.id).children=this.initTreeData(list,item['code']).sort(this.sortData('sort'))
this.rolesAll.forEach(itemRes => {
if (item.permission == itemRes.name) {
if (itemRes.isGranted) {
this.checkedPermission.push(item.id);
}
}
})
}
})
return children
},
//table //table
pageList(val) { pageList(val) {
const data = { const data = {
@ -335,7 +267,6 @@
return; return;
} }
this.queryInfo.Sorting = prop + " " + order; this.queryInfo.Sorting = prop + " " + order;
// alert(this.listQuery.Sorting)
this.handleFilter(); this.handleFilter();
}, },
// //
@ -363,7 +294,6 @@
this.$refs.form.resetFields(); this.$refs.form.resetFields();
this.dialogVisible = false; this.dialogVisible = false;
this.form.name = ""; this.form.name = "";
this.form.extraProperties.Description = "";
this.$refs.multipleTable.clearSelection(); this.$refs.multipleTable.clearSelection();
}, },
// //
@ -388,7 +318,6 @@
this.usersId = row.id; this.usersId = row.id;
this.form.name = row.name; this.form.name = row.name;
this.concurrencyStamp = row.concurrencyStamp; this.concurrencyStamp = row.concurrencyStamp;
this.form.extraProperties.Description = row.extraProperties.Description;
} }
}, },
// //
@ -405,6 +334,7 @@
postDeleteRoles(row.id).then((res) => { postDeleteRoles(row.id).then((res) => {
this.$successMsg("删除成功!"); this.$successMsg("删除成功!");
this.pageList(); this.pageList();
this.permissionsData = []
}); });
}) })
.catch(() => {}); .catch(() => {});
@ -416,7 +346,6 @@
if (valid && !this.isEdit) { if (valid && !this.isEdit) {
postCreateRoles(this.form) postCreateRoles(this.form)
.then((res) => { .then((res) => {
this.saveOrUpdateDescribe(res.id)
this.resetform(); this.resetform();
this.$successMsg("创建成功!"); this.$successMsg("创建成功!");
this.queryInfo.currentPage = 1; this.queryInfo.currentPage = 1;
@ -432,7 +361,6 @@
postUpdateRoles(data, this.usersId) postUpdateRoles(data, this.usersId)
.then((res) => { .then((res) => {
this.$successMsg("编辑成功!"); this.$successMsg("编辑成功!");
this.saveOrUpdateDescribe(this.usersId)
this.pageList(); this.pageList();
this.resetform(); this.resetform();
}) })
@ -445,149 +373,60 @@
} }
}); });
}, },
//
saveOrUpdateDescribe (id) {
saveOrUpdateDescribe({description:this.form.extraProperties.Description}, id).then(res => {
// console.log(res)
}).catch(err => {
console.log(err)
})
},
handleSelectionChange(val) { handleSelectionChange(val) {
this.multipleSelection = val; this.multipleSelection = val;
}, },
// //
savePer(){ savePer(){
this.savePerLoading = true; let _allList = []
let params = {};
let checkedKeys = this.$refs.tree.getCheckedKeys(); let checkedKeys = this.$refs.tree.getCheckedKeys();
params.permissions = []; this.permissionsData.forEach(item=>{
this.permissionsData.forEach((element) => { //
element.children.forEach((item) => { item.children.forEach(item_menu=>{
let perm = {}; let _Granted1 = checkedKeys.indexOf(item_menu.name) >= 0 ? true : false
perm.name = item.displayName; _allList.push({isGranted:_Granted1,name:item_menu.name})
perm.isGranted = false; //
if (checkedKeys.indexOf(item.id) > -1) { if(item_menu.children){
perm.isGranted = true; item_menu.children.forEach(item_handle=>{
let _Granted2 = checkedKeys.indexOf(item_handle.name) >= 0 ? true : false
_allList.push({isGranted:_Granted2,name:item_handle.name})
// true
if(_Granted2){
_allList.forEach((allItem)=>{
if(allItem.name == item_handle.parentName){
allItem.isGranted = true
} }
//
this.getZSG(item.displayName, params, perm.isGranted)
params.permissions.push(perm);
item.children.forEach((i) => {
let perm = {};
perm.name = i.displayName;
perm.isGranted = false;
if (checkedKeys.indexOf(i.id) > -1) {
perm.isGranted = true;
}
//
this.getZSG(i.displayName, params, perm.isGranted)
params.permissions.push(perm);
});
});
});
params.permissions.forEach((item,index) => {
//
if (item.name == 'skip') {
params.permissions.splice(index, 1)
}
// |
if (item.name == 'AbpIdentity.Users' ) {
if (item.isGranted) {
params.permissions.push({
isGranted: true,
name: 'AbpIdentity.Users.Create'
},{
isGranted: true,
name: 'AbpIdentity.Users.Update'
},{
isGranted: true,
name: 'AbpIdentity.Users.Delete'
},{
isGranted: true,
name: 'AbpIdentity.Users.ManagePermissions'
})
} else {
params.permissions.push({
isGranted: false,
name: 'AbpIdentity.Users.Create'
},{
isGranted: false,
name: 'AbpIdentity.Users.Update'
},{
isGranted: false,
name: 'AbpIdentity.Users.Delete'
},{
isGranted: false,
name: 'AbpIdentity.Users.ManagePermissions'
}) })
} }
}
if (item.name == 'AbpIdentity.Roles' ) {
if (item.isGranted) {
params.permissions.push({
isGranted: true,
name: 'AbpIdentity.Roles.Create'
},{
isGranted: true,
name: 'AbpIdentity.Roles.Update'
},{
isGranted: true,
name: 'AbpIdentity.Roles.Delete'
})
} else {
params.permissions.push({
isGranted: false,
name: 'AbpIdentity.Roles.Create'
},{
isGranted: false,
name: 'AbpIdentity.Roles.Update'
},{
isGranted: false,
name: 'AbpIdentity.Roles.Delete'
}) })
} }
}
}) })
// *************************
params.permissions.filter((item) => {
if (item.name == 'AbpIdentity.Roles.ManagePermissions' || item.name == 'Auth.UserMenu') {
item.isGranted = true
}
}) })
this.treeLoading = true;
putpermissionsRoles( savePermissionsRoles(
"/permission-management/permissions?providerName=R&providerKey=" + `/permission-management/permissions?providerName=${this.params.providerName}&providerKey=${this.multipleSelection[0].name}`,
this.multipleSelection[0].name, {permissions:_allList}
params
).then((response) => { ).then((response) => {
updatePermissionsGranted(this.params.providerName,this.multipleSelection[0].name).then(()=>{
this.$notify({ this.$notify({
title: "成功", title: "成功",
message: "更新成功", message: "更新成功",
type: "success", type: "success",
duration: 2000, duration: 2000,
}); });
this.savePerLoading = false; this.treeLoading = false;
}).catch(err=>{ //
this.savePerLoading = false; if(this.multipleSelection[0].name == this.$store.getters.currentUserInfo.name){
}); location.reload()
},
//
getZSG(name,params,isGranted) {
if (name !== 'skip') {
this.rolesAll.forEach(item => {
if (item.parentName == name ) {
let perm = {}
perm.name = item.name
perm.isGranted = isGranted
params.permissions.push(perm)
} }
}).catch(()=>{
this.treeLoading = false;
}) })
} }).catch(err=>{
this.treeLoading = false;
});
}, },
//table //table
handleRowClick(row, column, event) { handleRowClick(row, column, event) {
let that = this let that = this
@ -609,50 +448,48 @@
// } // }
this.params.providerKey = row.name; this.params.providerKey = row.name;
getpermissionsRoles(this.params).then((res) => { getPermissionsRoles(this.params).then((res) => {
this.rolesAll = []
this.permissionsData = []; this.permissionsData = [];
this.checkedPermission = []; this.checkedPermission = [];
// //
res.groups.forEach(itemRes => { res.groups.forEach((itemRes,indexRes) => {
itemRes.children = []
this.permissionsData.push(itemRes)
// todo:使
itemRes.permissions.forEach(item => { itemRes.permissions.forEach(item => {
// if (item.displayName !== '' && item.displayName !== '' && item.displayName !== '' && item.displayName !== '') { if(!item.parentName){
this.rolesAll.push(item) //
// } if(item.isGranted)this.checkedPermission.push(item.name)
}) this.permissionsData[indexRes].children.push(item)
}else{
//
if(item.isGranted)this.checkedPermission.push(item.name)
this.permissionsData[indexRes].children.forEach((pItem,pindex)=>{
if(pItem.name == item.parentName){
if(!this.permissionsData[indexRes].children[pindex].children)this.permissionsData[indexRes].children[pindex].children = []
this.permissionsData[indexRes].children[pindex].children.push(item)
// childrenflase
if(item.isGranted == false){
if(this.checkedPermission.indexOf(item.parentName) >= 0){
this.checkedPermission.splice(this.checkedPermission.indexOf(item.parentName),1)
}
}
}
}) })
let filters = [] }
filters.push({
logic: "And",
column: "portal",
action: "==",
value: "0"
}) })
const data = {
condition: {
filters: filters
},
Sorting: "",
SkipCount: 0,
MaxResultCount: 1000,
};
menuPermissions(data).then((res) => {
let rs = that.initTreeData(res.items,'').sort(that.sortData('sort'))
rs.forEach(item => {
that.permissionsData.push(item);
}) })
that.$nextTick(() => { that.$nextTick(() => {
that.$refs.tree.setCheckedKeys(that.checkedPermission) that.$refs.tree.setCheckedKeys(this.checkedPermission)
}) })
// console.log('',that.permissionsData) console.log('拥有权限',this.checkedPermission)
// console.log('',that.checkedPermission) console.log('菜单树',this.permissionsData)
// console.log('',that.rolesAll)
that.treeLoading = false; that.treeLoading = false;
}).catch((err)=>{ })
.catch((err)=>{
this.$errorMsg('暂无更改权限')
that.treeLoading = false; that.treeLoading = false;
console.log(err)
}) })
});
}, },
}, },
}; };
@ -710,4 +547,3 @@
} }
</style> </style>
Loading…
Cancel
Save