flowable 绕过idm自带的身份验证

2022-04-27  本文已影响0人  IT祖师爷

package org.flowable.ui.common.security;

import org.fh.util.Jurisdiction;

import org.flowable.common.engine.api.FlowableIllegalStateException;

import org.flowable.idm.api.User;

import org.flowable.ui.common.model.RemoteUser;

import org.springframework.security.core.Authentication;

import org.springframework.security.core.context.SecurityContext;

import org.springframework.security.core.context.SecurityContextHolder;

import java.util.ArrayList;

import java.util.List;

/**

* 说明:重构流程编辑器获取用户信息

* 作者:FH Admin

* from:www.fhadmin.cn

*/

public class SecurityUtils {

private static User assumeUser;

private static SecurityScopeProvider securityScopeProvider = new FlowableSecurityScopeProvider();

private SecurityUtils() {

}

/**

* Get the login of the current user.

*/

public static String getCurrentUserId() {

User user = getCurrentUserObject();

if (user != null) {

return user.getId();

}

return null;

}

/**

* @return the {@link User} object associated with the current logged in user.

*/

public static User getCurrentUserObject() {

if (assumeUser != null) {

return assumeUser;

}

RemoteUser user = new RemoteUser();

user.setId(Jurisdiction.getUsername());

user.setDisplayName(Jurisdiction.getName());

user.setFirstName(Jurisdiction.getName());

user.setLastName(Jurisdiction.getName());

user.setEmail("admin@flowable.com");

user.setPassword("123456");

List<String> pris = new ArrayList<>();

pris.add(DefaultPrivileges.ACCESS_MODELER);

pris.add(DefaultPrivileges.ACCESS_IDM);

pris.add(DefaultPrivileges.ACCESS_ADMIN);

pris.add(DefaultPrivileges.ACCESS_TASK);

pris.add(DefaultPrivileges.ACCESS_REST_API);

user.setPrivileges(pris);

return user;

}

    public static void setSecurityScopeProvider(SecurityScopeProvider securityScopeProvider) {

        SecurityUtils.securityScopeProvider = securityScopeProvider;

    }

    public static SecurityScope getCurrentSecurityScope() {

        SecurityContext securityContext = SecurityContextHolder.getContext();

        if (securityContext != null && securityContext.getAuthentication() != null) {

            return getSecurityScope(securityContext.getAuthentication());

        }

        return null;

    }

    public static SecurityScope getSecurityScope(Authentication authentication) {

        return securityScopeProvider.getSecurityScope(authentication);

    }

    public static SecurityScope getAuthenticatedSecurityScope() {

        SecurityScope currentSecurityScope = getCurrentSecurityScope();

        if (currentSecurityScope != null) {

            return currentSecurityScope;

        }

        throw new FlowableIllegalStateException("User is not authenticated");

    }

public static void assumeUser(User user) {

assumeUser = user;

}

public static void clearAssumeUser() {

assumeUser = null;

}

}

上一篇 下一篇

猜你喜欢

热点阅读