UserPermissionService.java 2.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081
  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, List<UserPermission> list) {
  33. userPermissionDao.delete(new LambdaUpdateWrapper<UserPermission>().eq(UserPermission::getUserId, user.getId()));
  34. saveBatch(list);
  35. }
  36. @Transactional
  37. public void delete(User user, Permission permission) {
  38. userPermissionDao.delete(new LambdaUpdateWrapper<UserPermission>().eq(UserPermission::getUserId, user.getId())
  39. .eq(UserPermission::getPermission, permission));
  40. }
  41. public boolean hasPermission(User user, Permission permission, Object data) {
  42. UserPermission up = findByUserAndPermission(user, permission);
  43. if (up == null) {
  44. return false;
  45. }
  46. if (permission.getScope() == null) {
  47. return true;
  48. }
  49. String scope = up.getScope();
  50. if (UserPermission.UNLIMIT_SCOPE.equals(scope)) {
  51. return true;
  52. }
  53. try {
  54. switch (permission.getScope()) {
  55. case APP:
  56. App app = appService.getById((Long) data);
  57. return app != null && up.getDataSet().contains(app.getId());
  58. case ENV:
  59. Env env = envService.getById((Long) data);
  60. return env != null && up.getDataSet().contains(env.getId());
  61. case DEPLOY:
  62. Deploy deploy = deployService.getById((Long) data);
  63. return deploy != null && up.getDataSet().contains(deploy.getId());
  64. }
  65. } catch (Exception ignored) {
  66. }
  67. return false;
  68. }
  69. }