1234567891011121314151617181920212223242526272829303132333435363738394041424344454647484950515253545556575859606162636465666768697071727374757677787980 |
- package com.qmth.ops.biz.service;
- import com.baomidou.mybatisplus.core.conditions.query.LambdaQueryWrapper;
- import com.baomidou.mybatisplus.core.conditions.update.LambdaUpdateWrapper;
- import com.baomidou.mybatisplus.extension.service.impl.ServiceImpl;
- import com.qmth.ops.api.security.Permission;
- import com.qmth.ops.biz.dao.UserPermissionDao;
- import com.qmth.ops.biz.domain.*;
- import org.springframework.stereotype.Service;
- import org.springframework.transaction.annotation.Transactional;
- import javax.annotation.Resource;
- import java.util.List;
- @Service
- public class UserPermissionService extends ServiceImpl<UserPermissionDao, UserPermission> {
- @Resource
- private UserPermissionDao userPermissionDao;
- @Resource
- private AppService appService;
- @Resource
- private EnvService envService;
- @Resource
- private DeployService deployService;
- public List<UserPermission> listByUser(User user) {
- return userPermissionDao
- .selectList(new LambdaQueryWrapper<UserPermission>().eq(UserPermission::getUserId, user.getId()));
- }
- public UserPermission findByUserAndPermission(User user, Permission permission) {
- return userPermissionDao.selectOne(
- new LambdaQueryWrapper<UserPermission>().eq(UserPermission::getUserId, user.getId())
- .eq(UserPermission::getPermission, permission));
- }
- @Transactional
- public void save(User user, Permission permission, String scope) {
- userPermissionDao.save(user.getId(), permission, scope);
- }
- @Transactional
- public void delete(User user, Permission permission) {
- userPermissionDao.delete(new LambdaUpdateWrapper<UserPermission>().eq(UserPermission::getUserId, user.getId())
- .eq(UserPermission::getPermission, permission));
- }
- public boolean hasPermission(User user, Permission permission, Object data) {
- UserPermission up = findByUserAndPermission(user, permission);
- if (up == null) {
- return false;
- }
- if (permission.getScope() == null) {
- return true;
- }
- String scope = up.getScope();
- if (UserPermission.UNLIMIT_SCOPE.equals(scope)) {
- return true;
- }
- try {
- switch (permission.getScope()) {
- case APP:
- App app = appService.getById((Long) data);
- return app != null && up.getDataSet().contains(app.getId());
- case ENV:
- Env env = envService.getById((Long) data);
- return env != null && up.getDataSet().contains(env.getId());
- case DEPLOY:
- Deploy deploy = deployService.getById((Long) data);
- return deploy != null && up.getDataSet().contains(deploy.getId());
- }
- } catch (Exception ignored) {
- }
- return false;
- }
- }
|