UserPermissionService.java 2.8 KB

1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980
  1. package com.qmth.ops.biz.service;
  2. import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
  3. import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
  4. import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
  5. import com.qmth.ops.api.security.Permission;
  6. import com.qmth.ops.biz.dao.UserPermissionDao;
  7. import com.qmth.ops.biz.domain.*;
  8. import org.springframework.stereotype.Service;
  9. import org.springframework.transaction.annotation.Transactional;
  10. import javax.annotation.Resource;
  11. import java.util.List;
  12. @Service
  13. public class UserPermissionService extends ServiceImpl<UserPermissionDao, UserPermission> {
  14. @Resource
  15. private UserPermissionDao userPermissionDao;
  16. @Resource
  17. private AppService appService;
  18. @Resource
  19. private EnvService envService;
  20. @Resource
  21. private DeployService deployService;
  22. public List<UserPermission> listByUser(User user) {
  23. return userPermissionDao
  24. .selectList(new LambdaQueryWrapper<UserPermission>().eq(UserPermission::getUserId, user.getId()));
  25. }
  26. public UserPermission findByUserAndPermission(User user, Permission permission) {
  27. return userPermissionDao.selectOne(
  28. new LambdaQueryWrapper<UserPermission>().eq(UserPermission::getUserId, user.getId())
  29. .eq(UserPermission::getPermission, permission));
  30. }
  31. @Transactional
  32. public void save(User user, Permission permission, String scope) {
  33. userPermissionDao.save(user.getId(), permission, scope);
  34. }
  35. @Transactional
  36. public void delete(User user, Permission permission) {
  37. userPermissionDao.delete(new LambdaUpdateWrapper<UserPermission>().eq(UserPermission::getUserId, user.getId())
  38. .eq(UserPermission::getPermission, permission));
  39. }
  40. public boolean hasPermission(User user, Permission permission, Object data) {
  41. UserPermission up = findByUserAndPermission(user, permission);
  42. if (up == null) {
  43. return false;
  44. }
  45. if (permission.getScope() == null) {
  46. return true;
  47. }
  48. String scope = up.getScope();
  49. if (UserPermission.UNLIMIT_SCOPE.equals(scope)) {
  50. return true;
  51. }
  52. try {
  53. switch (permission.getScope()) {
  54. case APP:
  55. App app = appService.getById((Long) data);
  56. return app != null && up.getDataSet().contains(app.getId());
  57. case ENV:
  58. Env env = envService.getById((Long) data);
  59. return env != null && up.getDataSet().contains(env.getId());
  60. case DEPLOY:
  61. Deploy deploy = deployService.getById((Long) data);
  62. return deploy != null && up.getDataSet().contains(deploy.getId());
  63. }
  64. } catch (Exception ignored) {
  65. }
  66. return false;
  67. }
  68. }