1 package fr.ifremer.dali.config;
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26 import com.google.common.collect.Lists;
27 import fr.ifremer.quadrige3.core.security.QuadrigeUserAuthority;
28 import fr.ifremer.quadrige3.core.security.SecurityContextHelper;
29 import org.nuiton.config.ConfigOptionDef;
30
31 import java.util.List;
32
33
34
35
36
37
38 public class DaliSecuredConfigurationOption implements ConfigOptionDef {
39
40 private final ConfigOptionDef delegate;
41 private final List<QuadrigeUserAuthority> roles;
42
43
44
45
46
47
48
49 public DaliSecuredConfigurationOption(ConfigOptionDef delegate, QuadrigeUserAuthority role) {
50 this.delegate = delegate;
51 this.roles = Lists.newArrayList(role);
52 }
53
54
55
56
57
58
59
60 public DaliSecuredConfigurationOption(ConfigOptionDef delegate, List<QuadrigeUserAuthority> roles) {
61 this.delegate = delegate;
62 this.roles = roles;
63 }
64
65
66 @Override
67 public String getKey() {
68 return delegate.getKey();
69 }
70
71
72 @Override
73 public Class<?> getType() {
74 return delegate.getType();
75 }
76
77
78 @Override
79 public String getDescription() {
80 return delegate.getDescription();
81 }
82
83
84 @Override
85 public String getDefaultValue() {
86 return delegate.getDefaultValue();
87 }
88
89
90 @Override
91 public boolean isTransient() {
92 return delegate.isTransient();
93 }
94
95
96 @Override
97 public boolean isFinal() {
98 return !SecurityContextHelper.hasAuthority(roles) || delegate.isFinal();
99 }
100
101
102 @Override
103 public void setDefaultValue(String defaultValue) {
104 if (!SecurityContextHelper.hasAuthority(roles)) {
105 return;
106 }
107 delegate.setDefaultValue(defaultValue);
108 }
109
110
111 @Override
112 public void setTransient(boolean isTransient) {
113 if (!SecurityContextHelper.hasAuthority(roles)) {
114 return;
115 }
116 delegate.setTransient(isTransient);
117 }
118
119
120 @Override
121 public void setFinal(boolean isFinal) {
122 if (!SecurityContextHelper.hasAuthority(roles)) {
123 return;
124 }
125 delegate.setFinal(isFinal);
126 }
127
128 }