Skip to content

Commit 8b23d37

Browse files
committed
Release datarouter 0.0.126
1 parent fd7590a commit 8b23d37

File tree

884 files changed

+17020
-7006
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

884 files changed

+17020
-7006
lines changed

datarouter-auth-web/README.md

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ datarouter-auth-web is a framework that brings in users and apikey accounts to d
88
<dependency>
99
<groupId>io.datarouter</groupId>
1010
<artifactId>datarouter-auth-web</artifactId>
11-
<version>0.0.125</version>
11+
<version>0.0.126</version>
1212
</dependency>
1313
```
1414

datarouter-auth-web/pom.xml

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@
2222
<parent>
2323
<groupId>io.datarouter</groupId>
2424
<artifactId>datarouter-parent</artifactId>
25-
<version>0.0.125</version>
25+
<version>0.0.126</version>
2626
<relativePath>../datarouter-parent</relativePath>
2727
</parent>
2828

datarouter-auth-web/src/main/java/io/datarouter/auth/web/cache/DatarouterAccountPermissionKeysByPrefixCache.java

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -19,19 +19,19 @@
1919
import java.util.Map;
2020
import java.util.concurrent.atomic.AtomicReference;
2121

22-
import io.datarouter.auth.storage.account.permission.BaseDatarouterAccountPermissionDao;
22+
import io.datarouter.auth.storage.account.permission.DatarouterAccountPermissionDao;
2323
import io.datarouter.auth.storage.account.permission.DatarouterAccountPermissionKey;
2424
import jakarta.inject.Inject;
2525
import jakarta.inject.Singleton;
2626

2727
@Singleton
2828
public class DatarouterAccountPermissionKeysByPrefixCache{
2929

30-
private final BaseDatarouterAccountPermissionDao dao;
30+
private final DatarouterAccountPermissionDao dao;
3131
private final AtomicReference<Map<DatarouterAccountPermissionKey,List<DatarouterAccountPermissionKey>>> cache;
3232

3333
@Inject
34-
public DatarouterAccountPermissionKeysByPrefixCache(BaseDatarouterAccountPermissionDao dao){
34+
public DatarouterAccountPermissionKeysByPrefixCache(DatarouterAccountPermissionDao dao){
3535
this.dao = dao;
3636
this.cache = new AtomicReference<>(load());
3737
}

datarouter-auth-web/src/main/java/io/datarouter/auth/web/client/BaseDatarouterClientSettings.java

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -36,11 +36,15 @@ public abstract class BaseDatarouterClientSettings
3636
public final RefreshableSupplier<String> refreshableApiKey;
3737
public final RefreshableSupplier<String> refreshablePrivateKey;
3838

39+
// Fixed value that could potentially become a setting, if needed.
40+
public final String clientName;
41+
3942
//This newer constructor doesn't need DatarouterService
4043
public BaseDatarouterClientSettings(
4144
SettingFinder finder,
4245
DefaultDatarouterAccountKeysSupplier defaultDatarouterAccountKeys,
4346
String settingNodeName,
47+
String clientName,
4448
String contextPath,
4549
DefaultSettingValue<String> endpointDomainDefaults){
4650
super(finder, settingNodeName);
@@ -50,6 +54,7 @@ public BaseDatarouterClientSettings(
5054
privateKey = registerString("privateKey", defaultDatarouterAccountKeys.getDefaultSecretKey());
5155
refreshableApiKey = new RefreshableStringCachedSetting(apiKey);
5256
refreshablePrivateKey = new RefreshableStringCachedSetting(privateKey);
57+
this.clientName = clientName;
5358
}
5459

5560
@Override
@@ -77,4 +82,9 @@ public RefreshableSupplier<String> getRefreshablePrivateKey(){
7782
return refreshablePrivateKey;
7883
}
7984

85+
@Override
86+
public String getClientName(){
87+
return clientName;
88+
}
89+
8090
}

datarouter-auth-web/src/main/java/io/datarouter/auth/web/client/BaseSimpleDatarouterClientSettings.java

Lines changed: 0 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,6 @@ public abstract class BaseSimpleDatarouterClientSettings
3434

3535
public final CachedSetting<DatarouterDuration> timeout;
3636
public final CachedSetting<Integer> numRetries;
37-
public final CachedSetting<Boolean> enableBreakers;
3837
public final Setting<Boolean> traceInQueryString;
3938
public final Setting<Boolean> debugLog;
4039

@@ -44,7 +43,6 @@ public BaseSimpleDatarouterClientSettings(
4443
super(finder, settingNodeName);
4544
timeout = registerDurations("timeout", getTimeoutDefaultSettingValue());
4645
numRetries = registerIntegers("numRetries", getNumRetriesDefault());
47-
enableBreakers = registerBooleans("enableBreakers", getEnableBreakersDefault());
4846
traceInQueryString = registerBoolean("traceInQueryString", false);
4947
debugLog = registerBoolean("debugLog", false);
5048
}
@@ -59,11 +57,6 @@ public final Supplier<Integer> getNumRetries(){
5957
return numRetries;
6058
}
6159

62-
@Override
63-
public final Supplier<Boolean> getEnableBreakers(){
64-
return enableBreakers;
65-
}
66-
6760
@Override
6861
public Setting<Boolean> getTraceInQueryString(){
6962
return traceInQueryString;

datarouter-auth-web/src/main/java/io/datarouter/auth/web/config/ApiDocsNavBarItem.java

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -34,7 +34,7 @@ public class ApiDocsNavBarItem implements DynamicNavBarItem{
3434

3535
@Override
3636
public NavBarItem getNavBarItem(){
37-
return new NavBarItem(AppNavBarCategory.DOCS, paths.docs.join("/", "/", "/"), "Api Docs");
37+
return new NavBarItem(AppNavBarCategory.DOCS, paths.docs.toSlashedString(), "Api Docs");
3838
}
3939

4040
@Override

datarouter-auth-web/src/main/java/io/datarouter/auth/web/config/DatarouterAuthPlugin.java

Lines changed: 4 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -19,22 +19,17 @@
1919
import java.util.HashMap;
2020
import java.util.List;
2121
import java.util.Map;
22-
import java.util.Optional;
2322

2423
import io.datarouter.auth.config.DatarouterAuthPaths;
2524
import io.datarouter.auth.service.DatarouterUserService;
2625
import io.datarouter.auth.service.UserInfo;
2726
import io.datarouter.auth.service.deprovisioning.UserDeprovisioningStrategy;
28-
import io.datarouter.auth.storage.account.BaseDatarouterAccountDao;
2927
import io.datarouter.auth.storage.account.DatarouterAccountDao;
3028
import io.datarouter.auth.storage.account.DatarouterAccountDao.DatarouterAccountDaoParams;
31-
import io.datarouter.auth.storage.account.credential.BaseDatarouterAccountCredentialDao;
3229
import io.datarouter.auth.storage.account.credential.DatarouterAccountCredentialDao;
3330
import io.datarouter.auth.storage.account.credential.DatarouterAccountCredentialDao.DatarouterAccountCredentialDaoParams;
34-
import io.datarouter.auth.storage.account.credential.secret.BaseDatarouterAccountSecretCredentialDao;
3531
import io.datarouter.auth.storage.account.credential.secret.DatarouterAccountSecretCredentialDao;
3632
import io.datarouter.auth.storage.account.credential.secret.DatarouterAccountSecretCredentialDao.DatarouterAccountSecretCredentialDaoParams;
37-
import io.datarouter.auth.storage.account.permission.BaseDatarouterAccountPermissionDao;
3833
import io.datarouter.auth.storage.account.permission.DatarouterAccountPermissionDao;
3934
import io.datarouter.auth.storage.account.permission.DatarouterAccountPermissionDao.DatarouterAccountPermissionDaoParams;
4035
import io.datarouter.auth.storage.user.datarouteruser.DatarouterUserDao;
@@ -59,13 +54,14 @@
5954
import io.datarouter.auth.web.config.routeset.DatarouterAccountRouteSet;
6055
import io.datarouter.auth.web.config.routeset.DatarouterAuthRouteSet;
6156
import io.datarouter.auth.web.config.routeset.DatarouterDocumentationRouteSet;
57+
import io.datarouter.auth.web.config.routeset.DatarouterRoleRequirementsRouteSet;
6258
import io.datarouter.auth.web.config.routeset.UserDeprovisioningRouteSet;
6359
import io.datarouter.auth.web.service.AccountCallerTypeRegistry2;
6460
import io.datarouter.auth.web.service.CopyUserListener;
6561
import io.datarouter.auth.web.service.CopyUserListener.DefaultCopyUserListener;
6662
import io.datarouter.auth.web.service.DatarouterAccountDailyDigest;
67-
import io.datarouter.auth.web.service.DatarouterAccountDeleteAction;
6863
import io.datarouter.auth.web.service.DatarouterDefaultAccountKeysDailyDigest;
64+
import io.datarouter.auth.web.service.DatarouterDefaultStaleAccountsDailyDigest;
6965
import io.datarouter.auth.web.service.DatarouterDefaultUserDailyDigest;
7066
import io.datarouter.auth.web.service.DatarouterPermissionRequestUserInfo;
7167
import io.datarouter.auth.web.service.DatarouterUserDeprovisioningStrategy;
@@ -96,7 +92,6 @@ public class DatarouterAuthPlugin extends BaseWebPlugin{
9692
private final String defaultDatarouterUserPassword;
9793
private final String defaultApiKey;
9894
private final String defaultSecretKey;
99-
private final Optional<Class<? extends DatarouterAccountDeleteAction>> datarouterAccountDeleteAction;
10095
private final List<Class<? extends CallerType>> callerTypes2;
10196

10297
private DatarouterAuthPlugin(
@@ -107,15 +102,13 @@ private DatarouterAuthPlugin(
107102
String defaultDatarouterUserPassword,
108103
String defaultApiKey,
109104
String defaultSecretKey,
110-
Optional<Class<? extends DatarouterAccountDeleteAction>> datarouterAccountDeleteAction,
111105
List<Class<? extends CallerType>> callerTypes2,
112106
Map<PluginConfigKey<?>,Class<? extends PluginConfigValue<?>>> configs){
113107
this.userDeprovisioningStrategyClass = userDeprovisioningStrategyClass;
114108
this.copyUserListenerClass = copyUserListenerClass;
115109
this.defaultDatarouterUserPassword = defaultDatarouterUserPassword;
116110
this.defaultApiKey = defaultApiKey;
117111
this.defaultSecretKey = defaultSecretKey;
118-
this.datarouterAccountDeleteAction = datarouterAccountDeleteAction;
119112
this.callerTypes2 = callerTypes2;
120113

121114
if(enableUserAuth){
@@ -139,24 +132,22 @@ private DatarouterAuthPlugin(
139132
addRouteSet(DatarouterAccountRouteSet.class);
140133
addRouteSet(DatarouterDocumentationRouteSet.class);
141134
addRouteSet(UserDeprovisioningRouteSet.class);
135+
addRouteSet(DatarouterRoleRequirementsRouteSet.class);
142136
addSettingRoot(DatarouterAuthSettingRoot.class);
143137
addPluginEntry(BaseTriggerGroup.KEY, DatarouterAuthTriggerGroup.class);
144138
setDaosModule(daosModuleBuilder);
145139
addDatarouterGithubDocLink("datarouter-auth-web");
146140
addDailyDigest(PermissionRequestDailyDigest.class);
147141
addDailyDigest(DatarouterAccountDailyDigest.class);
148142
addDailyDigest(DatarouterDefaultAccountKeysDailyDigest.class);
143+
addDailyDigest(DatarouterDefaultStaleAccountsDailyDigest.class);
149144
addDailyDigest(DatarouterDefaultUserDailyDigest.class);
150145
configs.forEach(this::addPluginEntry);
151146
}
152147

153148
@Override
154149
protected void configure(){
155150
bindActual(BaseDatarouterSessionDao.class, DatarouterSessionDao.class);
156-
bindActual(BaseDatarouterAccountDao.class, DatarouterAccountDao.class);
157-
bindActual(BaseDatarouterAccountCredentialDao.class, DatarouterAccountCredentialDao.class);
158-
bindActual(BaseDatarouterAccountSecretCredentialDao.class, DatarouterAccountSecretCredentialDao.class);
159-
bindActual(BaseDatarouterAccountPermissionDao.class, DatarouterAccountPermissionDao.class);
160151
bindActual(BaseDatarouterUserAccountMapDao.class, DatarouterUserAccountMapDao.class);
161152
bindActual(BaseDatarouterSamlDao.class, DatarouterSamlDao.class);
162153

@@ -166,7 +157,6 @@ protected void configure(){
166157
new DefaultDatarouterUserPassword(defaultDatarouterUserPassword));
167158
bindActualInstance(DefaultDatarouterAccountKeysSupplier.class,
168159
new DefaultDatarouterAccountKeys(defaultApiKey, defaultSecretKey));
169-
datarouterAccountDeleteAction.ifPresent(clazz -> bind(DatarouterAccountDeleteAction.class).to(clazz));
170160
bindActualInstance(AccountCallerTypeRegistry2.class, new AccountCallerTypeRegistry2(callerTypes2));
171161
}
172162

@@ -183,8 +173,6 @@ public static class DatarouterAuthPluginBuilder{
183173
private String defaultDatarouterUserPassword = "";
184174
private String defaultApiKey = "";
185175
private String defaultSecretKey = "";
186-
private Optional<Class<? extends DatarouterAccountDeleteAction>> datarouterAccountDeleteAction = Optional
187-
.empty();
188176
private List<Class<? extends CallerType>> callerTypes2 = new ArrayList<>();
189177

190178
public DatarouterAuthPluginBuilder(
@@ -221,13 +209,6 @@ public DatarouterAuthPluginBuilder setCopyUserListenerClass(
221209
return this;
222210
}
223211

224-
// TODO delete?
225-
public DatarouterAuthPluginBuilder setDatarouterAccountDeleteAction(
226-
Class<? extends DatarouterAccountDeleteAction> datarouterAccountDeleteAction){
227-
this.datarouterAccountDeleteAction = Optional.of(datarouterAccountDeleteAction);
228-
return this;
229-
}
230-
231212
public DatarouterAuthPluginBuilder setPermissionRequestUserInfo(
232213
Class<? extends PermissionRequestUserInfo> permissionRequestUserInfo){
233214
configs.put(PermissionRequestUserInfo.KEY, permissionRequestUserInfo);
@@ -259,7 +240,6 @@ public DatarouterAuthPlugin build(){
259240
defaultDatarouterUserPassword,
260241
defaultApiKey,
261242
defaultSecretKey,
262-
datarouterAccountDeleteAction,
263243
callerTypes2,
264244
configs);
265245
}

datarouter-auth-web/src/main/java/io/datarouter/auth/web/config/routeset/DatarouterAccountRouteSet.java

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package io.datarouter.auth.web.config.routeset;
1717

1818
import io.datarouter.auth.config.DatarouterAuthPaths;
19-
import io.datarouter.auth.role.DatarouterUserRole;
19+
import io.datarouter.auth.role.DatarouterUserRoleRegistry;
2020
import io.datarouter.auth.web.web.DatarouterAccountCallerTypeHandler;
2121
import io.datarouter.auth.web.web.DatarouterAccountManagerHandler;
2222
import io.datarouter.auth.web.web.DatarouterAccountRenameHandler;
@@ -39,7 +39,7 @@ public DatarouterAccountRouteSet(DatarouterAuthPaths paths){
3939
@Override
4040
protected DispatchRule applyDefault(DispatchRule rule){
4141
return rule
42-
.allowRoles(DatarouterUserRole.DATAROUTER_ACCOUNTS, DatarouterUserRole.DATAROUTER_ADMIN)
42+
.allowRoles(DatarouterUserRoleRegistry.DATAROUTER_ACCOUNTS, DatarouterUserRoleRegistry.DATAROUTER_ADMIN)
4343
.withTag(Tag.DATAROUTER);
4444
}
4545

datarouter-auth-web/src/main/java/io/datarouter/auth/web/config/routeset/DatarouterAuthRouteSet.java

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package io.datarouter.auth.web.config.routeset;
1717

1818
import io.datarouter.auth.config.DatarouterAuthPaths;
19-
import io.datarouter.auth.role.DatarouterUserRole;
19+
import io.datarouter.auth.role.DatarouterUserRoleRegistry;
2020
import io.datarouter.auth.web.web.DatarouterPermissionRequestHandler;
2121
import io.datarouter.auth.web.web.DatarouterSigninHandler;
2222
import io.datarouter.auth.web.web.DatarouterSignoutHandler;
@@ -44,31 +44,34 @@ public DatarouterAuthRouteSet(DatarouterAuthPaths paths){
4444
handle(paths.admin.createUser).withHandler(AdminEditUserHandler.class);
4545
handle(paths.admin.createUserSubmit).withHandler(AdminEditUserHandler.class);
4646
handle(paths.admin.editAccounts).withHandler(AdminEditUserHandler.class);
47-
handle(paths.admin.editRoles).withHandler(AdminEditUserHandler.class).allowRoles(DatarouterUserRole.REQUESTOR);
48-
handle(paths.admin.editUser).withHandler(AdminEditUserHandler.class).allowRoles(DatarouterUserRole.REQUESTOR);
47+
handle(paths.admin.editRoles)
48+
.withHandler(AdminEditUserHandler.class)
49+
.allowRoles(DatarouterUserRoleRegistry.REQUESTOR);
50+
handle(paths.admin.editUser).withHandler(AdminEditUserHandler.class)
51+
.allowRoles(DatarouterUserRoleRegistry.REQUESTOR);
4952
handle(paths.admin.getAllRoles).withHandler(AdminEditUserHandler.class)
50-
.allowRoles(DatarouterUserRole.USER);
53+
.allowRoles(DatarouterUserRoleRegistry.USER);
5154
handle(paths.admin.getIsSamlEnabled).withHandler(AdminEditUserHandler.class);
5255
handle(paths.admin.getUserDetails).withHandler(AdminEditUserHandler.class)
53-
.allowRoles(DatarouterUserRole.REQUESTOR);
56+
.allowRoles(DatarouterUserRoleRegistry.REQUESTOR);
5457
handle(paths.admin.getUserProfileImage).withHandler(AdminEditUserHandler.class)
55-
.allowRoles(DatarouterUserRole.REQUESTOR);
58+
.allowRoles(DatarouterUserRoleRegistry.REQUESTOR);
5659
handle(paths.admin.listUsers).withHandler(AdminEditUserHandler.class)
57-
.allowRoles(DatarouterUserRole.USER);
60+
.allowRoles(DatarouterUserRoleRegistry.USER);
5861
handle(paths.admin.updatePassword).withHandler(AdminEditUserHandler.class);
5962
handle(paths.admin.updateTimeZone).withHandler(AdminEditUserHandler.class);
6063
handle(paths.admin.viewUsers).withHandler(AdminEditUserHandler.class)
61-
.allowRoles(DatarouterUserRole.USER);
64+
.allowRoles(DatarouterUserRoleRegistry.USER);
6265

6366
handleDir(paths.permissionRequest)
6467
.withHandler(DatarouterPermissionRequestHandler.class)
65-
.allowRoles(DatarouterUserRole.REQUESTOR);
68+
.allowRoles(DatarouterUserRoleRegistry.REQUESTOR);
6669
}
6770

6871
@Override
6972
protected DispatchRule applyDefault(DispatchRule rule){
7073
return rule
71-
.allowRoles(DatarouterUserRole.ADMIN, DatarouterUserRole.DATAROUTER_ADMIN)
74+
.allowRoles(DatarouterUserRoleRegistry.DATAROUTER_ADMIN)
7275
.withTag(Tag.DATAROUTER);
7376
}
7477

datarouter-auth-web/src/main/java/io/datarouter/auth/web/config/routeset/DatarouterDocumentationRouteSet.java

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -16,7 +16,7 @@
1616
package io.datarouter.auth.web.config.routeset;
1717

1818
import io.datarouter.auth.config.DatarouterAuthPaths;
19-
import io.datarouter.auth.role.DatarouterUserRole;
19+
import io.datarouter.auth.role.DatarouterUserRoleRegistry;
2020
import io.datarouter.auth.web.web.DatarouterDocumentationHandler;
2121
import io.datarouter.storage.tag.Tag;
2222
import io.datarouter.web.dispatcher.BaseRouteSet;
@@ -27,20 +27,20 @@
2727
@Singleton
2828
public class DatarouterDocumentationRouteSet extends BaseRouteSet{
2929

30-
@SuppressWarnings("deprecation")
3130
@Inject
3231
public DatarouterDocumentationRouteSet(DatarouterAuthPaths paths){
33-
handleDir(paths.docs).withHandler(DatarouterDocumentationHandler.class);
32+
handle(paths.docs).withHandler(DatarouterDocumentationHandler.class);
33+
handle(paths.docs.getCsrfIv).withHandler(DatarouterDocumentationHandler.class);
34+
handle(paths.docs.getSignature).withHandler(DatarouterDocumentationHandler.class);
3435
}
3536

3637
@Override
3738
protected DispatchRule applyDefault(DispatchRule rule){
3839
return rule
3940
.allowRoles(
40-
DatarouterUserRole.ADMIN,
41-
DatarouterUserRole.DATAROUTER_ADMIN,
42-
DatarouterUserRole.DOC_USER,
43-
DatarouterUserRole.USER)
41+
DatarouterUserRoleRegistry.DATAROUTER_ADMIN,
42+
DatarouterUserRoleRegistry.DOC_USER,
43+
DatarouterUserRoleRegistry.USER)
4444
.withTag(Tag.DATAROUTER);
4545
}
4646

Original file line numberDiff line numberDiff line change
@@ -0,0 +1,43 @@
1+
/*
2+
* Copyright © 2009 HotPads (admin@hotpads.com)
3+
*
4+
* Licensed under the Apache License, Version 2.0 (the "License");
5+
* you may not use this file except in compliance with the License.
6+
* You may obtain a copy of the License at
7+
*
8+
* http://www.apache.org/licenses/LICENSE-2.0
9+
*
10+
* Unless required by applicable law or agreed to in writing, software
11+
* distributed under the License is distributed on an "AS IS" BASIS,
12+
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13+
* See the License for the specific language governing permissions and
14+
* limitations under the License.
15+
*/
16+
package io.datarouter.auth.web.config.routeset;
17+
18+
import io.datarouter.auth.config.DatarouterAuthPaths;
19+
import io.datarouter.auth.role.DatarouterUserRoleRegistry;
20+
import io.datarouter.auth.web.web.DatarouterRoleRequirementHandler;
21+
import io.datarouter.storage.tag.Tag;
22+
import io.datarouter.web.dispatcher.BaseRouteSet;
23+
import io.datarouter.web.dispatcher.DispatchRule;
24+
import jakarta.inject.Inject;
25+
import jakarta.inject.Singleton;
26+
27+
@Singleton
28+
public class DatarouterRoleRequirementsRouteSet extends BaseRouteSet{
29+
30+
@Inject
31+
private DatarouterRoleRequirementsRouteSet(DatarouterAuthPaths paths){
32+
handle(paths.datarouter.roleRequirements.getRequiredRolesByAfterContextPath)
33+
.withHandler(DatarouterRoleRequirementHandler.class);
34+
}
35+
36+
@Override
37+
protected DispatchRule applyDefault(DispatchRule rule){
38+
return rule
39+
.allowRoles(DatarouterUserRoleRegistry.REQUESTOR)
40+
.withTag(Tag.DATAROUTER);
41+
}
42+
43+
}

0 commit comments

Comments
 (0)