UNPKG

sails-hook-blacksails

Version:
92 lines (79 loc) 2.11 kB
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; } }, };