sails-hook-blacksails
Version:
A Sails Micro-app architecture framework
92 lines (79 loc) • 2.11 kB
JavaScript
import _ from 'lodash';
module.exports = {
async findAccessLevel(userId) {
try {
const user = await User.find({
where: {
id: userId,
},
include: [{
model: Role,
include: [Group],
}],
});
return user;
} catch (e) {
throw e;
}
},
getPermissions(roles, model) {
try {
const result = {
read_write: this.hasRoleDetailOfMenuItem({ roles, model, roleDetailName: 'READ_WRITE' }),
read: this.hasRoleDetailOfMenuItem({ roles, model, roleDetailName: 'READ' }),
create: this.hasRoleDetailOfMenuItem({ roles, model, roleDetailName: 'CREATE' }),
update: this.hasRoleDetailOfMenuItem({ roles, model, roleDetailName: 'UPDATE' }),
delete: this.hasRoleDetailOfMenuItem({ roles, model, roleDetailName: 'DELETE' }),
};
return result;
} catch (e) {
throw e;
}
},
hasRoleDetailOfMenuItem({ roles, model, roleDetailName }) {
try {
const menuItem = roles.some(role => (role.name === roleDetailName && role.MenuItemId === model.id));
// console.log('menuItem=>', menuItem);
return menuItem;
} catch (e) {
throw e;
}
},
async getUserAllRole({ user }) {
try {
// sails.log.info(roles, model, roleDetailName);
const findUser = await User.findOne({
where: {
id: user.id,
},
include: Role,
});
const rolesId = findUser.Roles.map(data => data.id);
let roleDetail = await RoleDetail.findAll({
where: {
RoleId: rolesId,
},
include: MenuItem,
});
roleDetail = roleDetail.map(data => data.dataValues);
return roleDetail;
} catch (e) {
throw e;
}
},
hasRole(user, roleName) {
},
hasRoleDetail(user, roleName) {
},
getAccessibleMenuItems({ roles }) {
},
canAccessApi(user, menuItem, httpMethod, apiPath) {
},
getRoleName(role) {
try {
return role.toString().split(':')[1].replace(']', '').toLowerCase();
} catch (e) {
throw e;
}
},
};