Skip to content

Commit ebc973f

Browse files
committed
Release datarouter 0.0.127
1 parent 8b23d37 commit ebc973f

File tree

1,014 files changed

+17589
-13262
lines changed

Some content is hidden

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

1,014 files changed

+17589
-13262
lines changed

.gitignore

Lines changed: 4 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -10,4 +10,7 @@ target/
1010
**/src/main/webapp/META-INF/
1111
.DS_Store
1212
*.factorypath
13-
.profiler/
13+
.profiler/
14+
.vscode/
15+
.cursor/
16+
.windsurfrules

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.126</version>
11+
<version>0.0.127</version>
1212
</dependency>
1313
```
1414

datarouter-auth-web/pom.xml

Lines changed: 5 additions & 5 deletions
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.126</version>
25+
<version>0.0.127</version>
2626
<relativePath>../datarouter-parent</relativePath>
2727
</parent>
2828

@@ -40,13 +40,13 @@
4040
</dependency>
4141
<dependency>
4242
<groupId>io.datarouter</groupId>
43-
<artifactId>datarouter-secret-web</artifactId>
43+
<artifactId>datarouter-auto-config</artifactId>
4444
<version>${datarouter-version}</version>
4545
</dependency>
4646
<dependency>
47-
<groupId>com.github.ben-manes.caffeine</groupId>
48-
<artifactId>caffeine</artifactId>
49-
<version>${ben-manes-caffeine-version}</version>
47+
<groupId>io.datarouter</groupId>
48+
<artifactId>datarouter-secret-web</artifactId>
49+
<version>${datarouter-version}</version>
5050
</dependency>
5151
<dependency>
5252
<groupId>io.datarouter</groupId>
Lines changed: 50 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,50 @@
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;
17+
18+
import io.datarouter.auth.config.DatarouterAuthPaths;
19+
import io.datarouter.scanner.Scanner;
20+
import io.datarouter.web.config.RouteSetRegistry;
21+
import io.datarouter.web.handler.documentation.DocumentationRouteSet;
22+
import io.datarouter.web.navigation.AppNavBarCategory;
23+
import io.datarouter.web.navigation.DynamicNavBarItem;
24+
import io.datarouter.web.navigation.NavBarCategory.NavBarItemType;
25+
import io.datarouter.web.navigation.NavBarItem;
26+
import jakarta.inject.Inject;
27+
28+
public class ApiDocsSchemaNavBarItem implements DynamicNavBarItem{
29+
30+
@Inject
31+
private DatarouterAuthPaths paths;
32+
@Inject
33+
private RouteSetRegistry routeSetRegistry;
34+
35+
@Override
36+
public NavBarItem getNavBarItem(){
37+
return new NavBarItem(AppNavBarCategory.DOCS, paths.schema.toSlashedString(), "Api Schemas");
38+
}
39+
40+
@Override
41+
public Boolean shouldDisplay(){
42+
return Scanner.of(routeSetRegistry.get())
43+
.anyMatch(clazz -> clazz instanceof DocumentationRouteSet);
44+
}
45+
46+
@Override
47+
public NavBarItemType getType(){
48+
return NavBarItemType.APP;
49+
}
50+
}

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

Lines changed: 9 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -15,20 +15,26 @@
1515
*/
1616
package io.datarouter.auth.web.config;
1717

18-
import io.datarouter.auth.web.service.DatarouterAccountConfigAppListenerService;
18+
import org.slf4j.Logger;
19+
import org.slf4j.LoggerFactory;
20+
21+
import io.datarouter.auth.web.service.DatarouterAccountConfigService;
22+
import io.datarouter.scanner.Scanner;
1923
import io.datarouter.web.listener.DatarouterAppListener;
2024
import jakarta.inject.Inject;
2125
import jakarta.inject.Singleton;
2226

2327
@Singleton
2428
public class DatarouterAccountConfigAppListener implements DatarouterAppListener{
29+
private static final Logger logger = LoggerFactory.getLogger(DatarouterAccountConfigAppListener.class);
2530

2631
@Inject
27-
private DatarouterAccountConfigAppListenerService service;
32+
private DatarouterAccountConfigService service;
2833

2934
@Override
3035
public void onStartUp(){
31-
service.createDefaultAccountRecords();
36+
Scanner.of(service.createDefaultAccountRecords())
37+
.forEach(logger::warn);
3238
}
3339

3440
}

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

Lines changed: 0 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,6 @@ public class DatarouterAuthFiles extends FilesRoot{
2626

2727
public static class JsFiles extends PathNode{
2828
public final PathNode accountManagerJsx = leaf("accountManager.jsx");
29-
public final PathNode deprovisionedUsersJsx = leaf("DeprovisionedUsers.jsx");
3029
public final PathNode viewUsersJsx = leaf("viewUsers.jsx");
3130
}
3231

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

Lines changed: 12 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,9 @@
2222

2323
import io.datarouter.auth.config.DatarouterAuthPaths;
2424
import io.datarouter.auth.service.DatarouterUserService;
25+
import io.datarouter.auth.service.PermissionRequestUserInfo;
2526
import io.datarouter.auth.service.UserInfo;
27+
import io.datarouter.auth.service.deprovisioning.DatarouterUserDeprovisioningStrategy;
2628
import io.datarouter.auth.service.deprovisioning.UserDeprovisioningStrategy;
2729
import io.datarouter.auth.storage.account.DatarouterAccountDao;
2830
import io.datarouter.auth.storage.account.DatarouterAccountDao.DatarouterAccountDaoParams;
@@ -34,8 +36,9 @@
3436
import io.datarouter.auth.storage.account.permission.DatarouterAccountPermissionDao.DatarouterAccountPermissionDaoParams;
3537
import io.datarouter.auth.storage.user.datarouteruser.DatarouterUserDao;
3638
import io.datarouter.auth.storage.user.datarouteruser.DatarouterUserDao.DatarouterUserDaoParams;
37-
import io.datarouter.auth.storage.user.deprovisioneduser.DeprovisionedUserDao;
38-
import io.datarouter.auth.storage.user.deprovisioneduser.DeprovisionedUserDao.DeprovisionedUserDaoParams;
39+
import io.datarouter.auth.storage.user.datarouteruser.cache.DatarouterUserByIdCache;
40+
import io.datarouter.auth.storage.user.datarouteruser.cache.DatarouterUserByUserTokenCache;
41+
import io.datarouter.auth.storage.user.datarouteruser.cache.DatarouterUserByUsernameCache;
3942
import io.datarouter.auth.storage.user.permissionrequest.DatarouterPermissionRequestDao;
4043
import io.datarouter.auth.storage.user.permissionrequest.DatarouterPermissionRequestDao.DatarouterPermissionRequestDaoParams;
4144
import io.datarouter.auth.storage.user.roleapprovals.DatarouterUserRoleApprovalDao;
@@ -55,27 +58,24 @@
5558
import io.datarouter.auth.web.config.routeset.DatarouterAuthRouteSet;
5659
import io.datarouter.auth.web.config.routeset.DatarouterDocumentationRouteSet;
5760
import io.datarouter.auth.web.config.routeset.DatarouterRoleRequirementsRouteSet;
58-
import io.datarouter.auth.web.config.routeset.UserDeprovisioningRouteSet;
5961
import io.datarouter.auth.web.service.AccountCallerTypeRegistry2;
60-
import io.datarouter.auth.web.service.CopyUserListener;
61-
import io.datarouter.auth.web.service.CopyUserListener.DefaultCopyUserListener;
6262
import io.datarouter.auth.web.service.DatarouterAccountDailyDigest;
6363
import io.datarouter.auth.web.service.DatarouterDefaultAccountKeysDailyDigest;
6464
import io.datarouter.auth.web.service.DatarouterDefaultStaleAccountsDailyDigest;
6565
import io.datarouter.auth.web.service.DatarouterDefaultUserDailyDigest;
6666
import io.datarouter.auth.web.service.DatarouterPermissionRequestUserInfo;
67-
import io.datarouter.auth.web.service.DatarouterUserDeprovisioningStrategy;
6867
import io.datarouter.auth.web.service.DefaultDatarouterAccountKeys;
6968
import io.datarouter.auth.web.service.DefaultDatarouterAccountKeysSupplier;
7069
import io.datarouter.auth.web.service.DefaultDatarouterUserPassword;
7170
import io.datarouter.auth.web.service.DefaultDatarouterUserPasswordSupplier;
7271
import io.datarouter.auth.web.service.PermissionRequestDailyDigest;
73-
import io.datarouter.auth.web.service.PermissionRequestUserInfo;
72+
import io.datarouter.autoconfig.service.AutoConfigGroup;
7473
import io.datarouter.httpclient.endpoint.caller.CallerType;
7574
import io.datarouter.job.BaseTriggerGroup;
7675
import io.datarouter.job.config.DatarouterJobRouteSet;
7776
import io.datarouter.plugin.PluginConfigKey;
7877
import io.datarouter.plugin.PluginConfigValue;
78+
import io.datarouter.storage.cache.Cache;
7979
import io.datarouter.storage.client.ClientId;
8080
import io.datarouter.storage.dao.Dao;
8181
import io.datarouter.storage.dao.DaosModuleBuilder;
@@ -88,7 +88,6 @@ public class DatarouterAuthPlugin extends BaseWebPlugin{
8888
private static final DatarouterAuthPaths PATHS = new DatarouterAuthPaths();
8989

9090
private final Class<? extends UserDeprovisioningStrategy> userDeprovisioningStrategyClass;
91-
private final Class<? extends CopyUserListener> copyUserListenerClass;
9291
private final String defaultDatarouterUserPassword;
9392
private final String defaultApiKey;
9493
private final String defaultSecretKey;
@@ -98,14 +97,12 @@ private DatarouterAuthPlugin(
9897
boolean enableUserAuth,
9998
DatarouterAuthDaoModule daosModuleBuilder,
10099
Class<? extends UserDeprovisioningStrategy> userDeprovisioningStrategyClass,
101-
Class<? extends CopyUserListener> copyUserListenerClass,
102100
String defaultDatarouterUserPassword,
103101
String defaultApiKey,
104102
String defaultSecretKey,
105103
List<Class<? extends CallerType>> callerTypes2,
106104
Map<PluginConfigKey<?>,Class<? extends PluginConfigValue<?>>> configs){
107105
this.userDeprovisioningStrategyClass = userDeprovisioningStrategyClass;
108-
this.copyUserListenerClass = copyUserListenerClass;
109106
this.defaultDatarouterUserPassword = defaultDatarouterUserPassword;
110107
this.defaultApiKey = defaultApiKey;
111108
this.defaultSecretKey = defaultSecretKey;
@@ -126,15 +123,18 @@ private DatarouterAuthPlugin(
126123
PATHS.datarouter.accountManager,
127124
"Accounts");
128125

129-
addAppNavBarItem(AppNavBarCategory.USER, PATHS.userDeprovisioning, "User Deprovisioning");
130126
addDynamicNavBarItem(ApiDocsNavBarItem.class);
127+
addDynamicNavBarItem(ApiDocsSchemaNavBarItem.class);
131128
addRouteSet(DatarouterAccountApiRouteSet.class);
132129
addRouteSet(DatarouterAccountRouteSet.class);
133130
addRouteSet(DatarouterDocumentationRouteSet.class);
134-
addRouteSet(UserDeprovisioningRouteSet.class);
135131
addRouteSet(DatarouterRoleRequirementsRouteSet.class);
136132
addSettingRoot(DatarouterAuthSettingRoot.class);
133+
addPluginEntry(AutoConfigGroup.KEY, DatarouterDefaultAccountAutoConfig.class);
137134
addPluginEntry(BaseTriggerGroup.KEY, DatarouterAuthTriggerGroup.class);
135+
addPluginEntry(Cache.KEY, DatarouterUserByIdCache.class);
136+
addPluginEntry(Cache.KEY, DatarouterUserByUsernameCache.class);
137+
addPluginEntry(Cache.KEY, DatarouterUserByUserTokenCache.class);
138138
setDaosModule(daosModuleBuilder);
139139
addDatarouterGithubDocLink("datarouter-auth-web");
140140
addDailyDigest(PermissionRequestDailyDigest.class);
@@ -152,7 +152,6 @@ protected void configure(){
152152
bindActual(BaseDatarouterSamlDao.class, DatarouterSamlDao.class);
153153

154154
bind(UserDeprovisioningStrategy.class).to(userDeprovisioningStrategyClass);
155-
bindActual(CopyUserListener.class, copyUserListenerClass);
156155
bindActualInstance(DefaultDatarouterUserPasswordSupplier.class,
157156
new DefaultDatarouterUserPassword(defaultDatarouterUserPassword));
158157
bindActualInstance(DefaultDatarouterAccountKeysSupplier.class,
@@ -169,7 +168,6 @@ public static class DatarouterAuthPluginBuilder{
169168

170169
private Class<? extends UserDeprovisioningStrategy> userDeprovisioningStrategyClass =
171170
DatarouterUserDeprovisioningStrategy.class;
172-
private Class<? extends CopyUserListener> copyUserListenerClass = DefaultCopyUserListener.class;
173171
private String defaultDatarouterUserPassword = "";
174172
private String defaultApiKey = "";
175173
private String defaultSecretKey = "";
@@ -203,12 +201,6 @@ public DatarouterAuthPluginBuilder setUserDeprovisioningStrategyClass(
203201
return this;
204202
}
205203

206-
public DatarouterAuthPluginBuilder setCopyUserListenerClass(
207-
Class<? extends CopyUserListener> copyUserListenerClass){
208-
this.copyUserListenerClass = copyUserListenerClass;
209-
return this;
210-
}
211-
212204
public DatarouterAuthPluginBuilder setPermissionRequestUserInfo(
213205
Class<? extends PermissionRequestUserInfo> permissionRequestUserInfo){
214206
configs.put(PermissionRequestUserInfo.KEY, permissionRequestUserInfo);
@@ -233,10 +225,8 @@ public DatarouterAuthPlugin build(){
233225
defaultClientId,
234226
defaultClientId,
235227
defaultClientId,
236-
defaultClientId,
237228
defaultClientId),
238229
userDeprovisioningStrategyClass,
239-
copyUserListenerClass,
240230
defaultDatarouterUserPassword,
241231
defaultApiKey,
242232
defaultSecretKey,
@@ -257,7 +247,6 @@ public static class DatarouterAuthDaoModule extends DaosModuleBuilder{
257247
private final List<ClientId> datarouterUserAccountMapClientIds;
258248
private final List<ClientId> datarouterUserClientIds;
259249
private final List<ClientId> datarouterUserHistoryClientIds;
260-
private final List<ClientId> deprovisionedUserClientIds;
261250
private final List<ClientId> datarouterUserRoleApprovalClientIds;
262251

263252
public DatarouterAuthDaoModule(
@@ -270,7 +259,6 @@ public DatarouterAuthDaoModule(
270259
List<ClientId> datarouterUserAccountMapClientIds,
271260
List<ClientId> datarouterUserClientIds,
272261
List<ClientId> datarouterUserHistoryClientIds,
273-
List<ClientId> deprovisionedUserClientIds,
274262
List<ClientId> datarouterUserRoleApprovalClientIds){
275263
this.datarouterAccountClientIds = datarouterAccountClientIds;
276264
this.datarouterAccountCredentialClientIds = datarouterAccountCredentialClientIds;
@@ -281,7 +269,6 @@ public DatarouterAuthDaoModule(
281269
this.datarouterUserAccountMapClientIds = datarouterUserAccountMapClientIds;
282270
this.datarouterUserClientIds = datarouterUserClientIds;
283271
this.datarouterUserHistoryClientIds = datarouterUserHistoryClientIds;
284-
this.deprovisionedUserClientIds = deprovisionedUserClientIds;
285272
this.datarouterUserRoleApprovalClientIds = datarouterUserRoleApprovalClientIds;
286273
}
287274

@@ -297,7 +284,6 @@ public List<Class<? extends Dao>> getDaoClasses(){
297284
DatarouterUserDao.class,
298285
DatarouterUserHistoryDao.class,
299286
DatarouterSamlDao.class,
300-
DeprovisionedUserDao.class,
301287
DatarouterUserRoleApprovalDao.class);
302288
}
303289

@@ -322,8 +308,6 @@ public void configure(){
322308
.toInstance(new DatarouterUserAccountMapDaoParams(datarouterUserAccountMapClientIds));
323309
bind(DatarouterSamlDaoParams.class)
324310
.toInstance(new DatarouterSamlDaoParams(datarouterSamlClientIds));
325-
bind(DeprovisionedUserDaoParams.class)
326-
.toInstance(new DeprovisionedUserDaoParams(deprovisionedUserClientIds));
327311
bind(DatarouterUserRoleApprovalDaoParams.class)
328312
.toInstance(new DatarouterUserRoleApprovalDaoParams(datarouterUserRoleApprovalClientIds));
329313
}

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

Lines changed: 8 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -15,6 +15,7 @@
1515
*/
1616
package io.datarouter.auth.web.config;
1717

18+
import java.time.Duration;
1819
import java.util.concurrent.TimeUnit;
1920

2021
import io.datarouter.storage.setting.DatarouterSettingCategory;
@@ -33,10 +34,11 @@ public class DatarouterAuthSettingRoot extends SettingRoot{
3334
public final CachedSetting<Boolean> runDeletedRoleCleanupJob;
3435
public final CachedSetting<Boolean> runUserSessionVacuumJob;
3536
public final CachedSetting<Boolean> runPermissionRequestVacuumJob;
36-
public final CachedSetting<Boolean> shouldUseDatarouterAccountCredentialInsteadOfDatarouterAccount;
37-
public final CachedSetting<Boolean> enableHandlerAccountCallerValidator;
37+
public final CachedSetting<Boolean> runInactivityRoleResetJob;
38+
public final CachedSetting<DatarouterDuration> inactivityRoleResetDuration;
3839
public final CachedSetting<DatarouterDuration> accountRefreshFrequencyDuration;
3940
public final CachedSetting<Boolean> enableAccountDailyDigest;
41+
public final CachedSetting<Boolean> allowRequestingRolesHasFromSamlGroup;
4042

4143
@Inject
4244
public DatarouterAuthSettingRoot(SettingFinder finder){
@@ -47,12 +49,13 @@ public DatarouterAuthSettingRoot(SettingFinder finder){
4749
runDeletedRoleCleanupJob = registerBoolean("runDeletedRoleCleanupJob", true);
4850
runUserSessionVacuumJob = registerBoolean("runUserSessionVacuum", false);
4951
runPermissionRequestVacuumJob = registerBoolean("runPermissionRequestVacuumJob", false);
50-
shouldUseDatarouterAccountCredentialInsteadOfDatarouterAccount = registerBoolean(
51-
"shouldUseDatarouterAccountCredentialInsteadOfDatarouterAccount", true);
52-
enableHandlerAccountCallerValidator = registerBoolean("enableHandlerAccountCallerValidator", false);
52+
runInactivityRoleResetJob = registerBoolean("runInactivityRoleResetJob", false);
53+
inactivityRoleResetDuration = registerDuration("inactivityRoleResetDuration",
54+
new DatarouterDuration(Duration.ofDays(180)));
5355
accountRefreshFrequencyDuration = registerDuration("accountRefreshFrequencyDuration",
5456
new DatarouterDuration(15, TimeUnit.SECONDS));
5557
enableAccountDailyDigest = registerBoolean("enableAccountDailyDigest", false);
58+
allowRequestingRolesHasFromSamlGroup = registerBoolean("allowRequestingRolesHasFromSamlGroup", false);
5659
}
5760

5861
}

0 commit comments

Comments
 (0)