This commit is contained in:
zhou-hao
2019-10-17 19:13:34 +08:00
parent 9d206c0580
commit 4c19aba069
9 changed files with 43 additions and 27 deletions

View File

@@ -13,7 +13,6 @@ public class DataAccessDefinition {
List<DataAccessTypeDefinition> dataAccessTypes=new ArrayList<>();
public Optional<DataAccessTypeDefinition> getType(String typeId){
return dataAccessTypes
.stream()

View File

@@ -1,5 +1,6 @@
package org.hswebframework.web.authorization.define;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.AccessLevel;
import lombok.Getter;
import lombok.Setter;
@@ -18,22 +19,23 @@ public class ResourceDefinition {
private String description;
private List<ResourceActionDefinition> actions=new ArrayList<>();
private List<ResourceActionDefinition> actions = new ArrayList<>();
private List<String> group;
@Setter(value = AccessLevel.PRIVATE)
@JsonIgnore
private volatile Set<String> actionIds;
private Logical logical = Logical.DEFAULT;
public void addAction(ResourceActionDefinition action){
public void addAction(ResourceActionDefinition action) {
actions.add(action);
}
public Optional<ResourceActionDefinition> getAction(String action){
public Optional<ResourceActionDefinition> getAction(String action) {
return actions.stream()
.filter(act->act.getId().equalsIgnoreCase(action))
.filter(act -> act.getId().equalsIgnoreCase(action))
.findAny();
}
@@ -47,15 +49,16 @@ public class ResourceDefinition {
return actionIds;
}
public List<ResourceActionDefinition> getDataAccessAction(){
@JsonIgnore
public List<ResourceActionDefinition> getDataAccessAction() {
return actions.stream()
.filter(act->act.getDataAccess()!=null)
.filter(act -> CollectionUtils.isNotEmpty(act.getDataAccess().getDataAccessTypes()))
.collect(Collectors.toList());
}
public boolean hasDataAccessAction(){
public boolean hasDataAccessAction() {
return actions.stream()
.anyMatch(act->act.getDataAccess()!=null);
.anyMatch(act -> CollectionUtils.isNotEmpty(act.getDataAccess().getDataAccessTypes()));
}
public boolean hasAction(Collection<String> actions) {

View File

@@ -1,5 +1,6 @@
package org.hswebframework.web.authorization.define;
import com.fasterxml.jackson.annotation.JsonIgnore;
import lombok.Getter;
import lombok.Setter;
import org.apache.commons.collections.CollectionUtils;
@@ -40,6 +41,7 @@ public class ResourcesDefinition {
.findAny();
}
@JsonIgnore
public List<ResourceDefinition> getDataAccessResources() {
return resources
.stream()

View File

@@ -2,12 +2,12 @@ package org.hswebframework.web.authorization.simple;
import lombok.AllArgsConstructor;
import org.hswebframework.web.authorization.*;
import org.reactivestreams.Publisher;
import reactor.core.publisher.Flux;
import reactor.core.publisher.Mono;
import java.util.List;
import java.util.function.Function;
import java.util.stream.Collectors;
@AllArgsConstructor
public class CompositeReactiveAuthenticationManager implements ReactiveAuthenticationManager {
@@ -16,17 +16,14 @@ public class CompositeReactiveAuthenticationManager implements ReactiveAuthentic
@Override
public Mono<Authentication> authenticate(Mono<AuthenticationRequest> request) {
return Flux
.fromStream(providers.stream()
.map(manager -> manager
.authenticate(request)
.onErrorResume((err) -> {
return Mono.empty();
})
))
.flatMap(Function.identity())
.reduceWith(SimpleAuthentication::of, Authentication::merge)
.filter(a -> a.getUser() != null);
return Flux.concat(providers.stream()
.map(manager -> manager
.authenticate(request)
.onErrorResume((err) -> {
return Mono.empty();
})).collect(Collectors.toList()))
.take(1)
.next();
}
@Override