package com.mossle.auth.component;
import javax.annotation.Resource;
import com.mossle.api.userauth.UserAuthCache;
import com.mossle.api.userauth.UserAuthConnector;
import com.mossle.api.userauth.UserAuthDTO;
import com.mossle.auth.persistence.domain.Perm;
import com.mossle.auth.persistence.domain.Role;
import com.mossle.auth.persistence.domain.RoleDef;
import com.mossle.auth.persistence.domain.UserStatus;
import org.springframework.stereotype.Component;
@Component
public class AuthCache {
private UserAuthCache userAuthCache;
private UserAuthConnector userAuthConnector;
public void evictUser(String userId) {
UserAuthDTO userAuthDto = userAuthConnector.findById(userId, "1");
userAuthCache.removeUserAuth(userAuthDto);
}
public void evictUserStatus(UserStatus userStatus) {
UserAuthDTO userAuthDto = new UserAuthDTO();
userAuthDto.setId(Long.toString(userStatus.getId()));
userAuthDto.setUsername(userStatus.getUsername());
userAuthDto.setRef(userStatus.getRef());
userAuthDto.setTenantId(userStatus.getTenantId());
userAuthCache.removeUserAuth(userAuthDto);
}
public void evictRole(Role role) {
for (UserStatus userStatus : role.getUserStatuses()) {
evictUserStatus(userStatus);
}
}
public void evictPerm(Perm perm) {
for (RoleDef roleDef : perm.getRoleDefs()) {
for (Role role : roleDef.getRoles()) {
evictRole(role);
}
}
}
@Resource
public void setUserAuthCache(UserAuthCache userAuthCache) {
this.userAuthCache = userAuthCache;
}
@Resource
public void setUserAuthConnector(UserAuthConnector userAuthConnector) {
this.userAuthConnector = userAuthConnector;
}
}