Skip to content

Commit 61d4fe9

Browse files
committed
优化权限维度
1 parent 6ba6e6a commit 61d4fe9

File tree

6 files changed

+28
-3
lines changed

6 files changed

+28
-3
lines changed
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,16 @@
11
package org.hswebframework.web.authorization;
22

33
import reactor.core.publisher.Flux;
4+
import reactor.core.publisher.Mono;
45

56
public interface DimensionProvider {
67

78
Flux<? extends DimensionType> getAllType();
89

910
Flux<? extends Dimension> getDimensionByUserId(String userId);
1011

12+
Mono<? extends Dimension> getDimensionById(DimensionType type, String id);
13+
1114
Flux<String> getUserIdByDimensionId(String dimensionId);
1215

1316
}

hsweb-commons/hsweb-commons-crud/src/main/java/org/hswebframework/web/crud/web/ResponseMessageWrapper.java

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,10 @@
1717
import java.util.List;
1818

1919
public class ResponseMessageWrapper extends ResponseBodyResultHandler {
20-
public ResponseMessageWrapper(List<HttpMessageWriter<?>> writers, RequestedContentTypeResolver resolver, ReactiveAdapterRegistry registry) {
20+
21+
public ResponseMessageWrapper(List<HttpMessageWriter<?>> writers,
22+
RequestedContentTypeResolver resolver,
23+
ReactiveAdapterRegistry registry) {
2124
super(writers, resolver, registry);
2225
setOrder(90);
2326
}

hsweb-starter/src/main/java/org/hswebframework/web/starter/jackson/CustomJackson2JsonDecoder.java

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,7 +43,8 @@ public CustomJackson2JsonDecoder(ObjectMapper mapper, MimeType... mimeTypes) {
4343

4444
@Override
4545
public boolean canDecode(ResolvableType elementType, @Nullable MimeType mimeType) {
46-
JavaType javaType = getObjectMapper().getTypeFactory().constructType(elementType.getType());
46+
Type type = elementType.resolve() == null ? elementType.getType() : elementType.resolve();
47+
JavaType javaType = getObjectMapper().getTypeFactory().constructType(type);
4748
// Skip String: CharSequenceDecoder + "*/*" comes after
4849
return (!CharSequence.class.isAssignableFrom(elementType.toClass()) &&
4950
getObjectMapper().canDeserialize(javaType) && supportsMimeType(mimeType));

hsweb-system/hsweb-system-authorization/hsweb-system-authorization-api/src/main/java/org/hswebframework/web/system/authorization/api/UserDimensionProvider.java

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.hswebframework.web.authorization.DimensionProvider;
66
import org.hswebframework.web.authorization.DimensionType;
77
import reactor.core.publisher.Flux;
8+
import reactor.core.publisher.Mono;
89

910
public class UserDimensionProvider implements DimensionProvider {
1011

@@ -19,6 +20,12 @@ public Flux<Dimension> getDimensionByUserId(String userId) {
1920
.map(id -> Dimension.of(userId, userId, DefaultDimensionType.user));
2021
}
2122

23+
@Override
24+
public Mono<? extends Dimension> getDimensionById(DimensionType type, String id) {
25+
return Mono.just(id)
26+
.map(userId -> Dimension.of(userId, userId, DefaultDimensionType.user));
27+
}
28+
2229
@Override
2330
public Flux<String> getUserIdByDimensionId(String dimensionId) {
2431
return Flux.just(dimensionId);

hsweb-system/hsweb-system-authorization/hsweb-system-authorization-api/src/main/java/org/hswebframework/web/system/authorization/api/entity/AuthorizationSettingEntity.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -47,7 +47,7 @@ public class AuthorizationSettingEntity implements Entity {
4747
@NotBlank(message = "维度目标不能为空",groups = CreateGroup.class)
4848
private String dimensionTarget;
4949

50-
@Column(name = "dimension_target_name", length = 64, updatable = false)
50+
@Column(name = "dimension_target_name", length = 64)
5151
@Comment("维度目标名称")//维度实例名称.如: 用户名. 角色名
5252
private String dimensionTargetName;
5353

hsweb-system/hsweb-system-authorization/hsweb-system-authorization-default/src/main/java/org/hswebframework/web/system/authorization/defaults/service/DefaultDimensionService.java

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,7 @@
55
import org.hswebframework.ezorm.rdb.mapping.ReactiveRepository;
66
import org.hswebframework.ezorm.rdb.mapping.ReactiveUpdate;
77
import org.hswebframework.ezorm.rdb.mapping.defaults.SaveResult;
8+
import org.hswebframework.web.authorization.Dimension;
89
import org.hswebframework.web.authorization.DimensionProvider;
910
import org.hswebframework.web.authorization.DimensionType;
1011
import org.hswebframework.web.crud.service.GenericReactiveCrudService;
@@ -61,6 +62,16 @@ public Flux<DimensionTypeEntity> getAllType() {
6162
.fetch();
6263
}
6364

65+
@Override
66+
public Mono<DynamicDimension> getDimensionById(DimensionType type, String id) {
67+
68+
return createQuery()
69+
.where(DimensionEntity::getId,id)
70+
.fetch()
71+
.singleOrEmpty()
72+
.map(entity-> DynamicDimension.of(entity, type));
73+
}
74+
6475
@Override
6576
public Flux<DynamicDimension> getDimensionByUserId(String userId) {
6677
return getAllType()

0 commit comments

Comments
 (0)