Skip to content

Commit 2e0836c

Browse files
committed
Merge discvr-19.3 to develop
2 parents 70e5c91 + 74f0fe2 commit 2e0836c

File tree

3 files changed

+46
-1
lines changed

3 files changed

+46
-1
lines changed

LDK/api-src/org/labkey/api/ldk/LDKService.java

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -77,4 +77,6 @@ static public void setInstance(LDKService instance)
7777
abstract public List<ButtonConfigFactory> getQueryButtons(TableInfo ti);
7878

7979
abstract public void customizeButtonBar(AbstractTableInfo ti, List<ButtonConfigFactory> buttons);
80+
81+
abstract public User getBackgroundAdminUser();
8082
}

LDK/resources/module.xml

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,4 +2,13 @@
22
<clientDependencies>
33
<dependency path="LDK/LDKApi"/>
44
</clientDependencies>
5+
<properties>
6+
<propertyDescriptor name="BackgroundAdminUser">
7+
<description>This is the username of a user that can be used by background processes to execute tasks. An example is certain system maintenance tasks, which might require a user to execute some operations.</description>
8+
<canSetPerContainer>false</canSetPerContainer>
9+
<editPermissions>
10+
<permission>ADMIN</permission>
11+
</editPermissions>
12+
</propertyDescriptor>
13+
</properties>
514
</module>

LDK/src/org/labkey/ldk/LDKServiceImpl.java

Lines changed: 35 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@
22

33
import org.apache.commons.collections4.MultiValuedMap;
44
import org.apache.commons.io.FileUtils;
5+
import org.apache.commons.lang3.StringUtils;
56
import org.apache.log4j.Level;
67
import org.apache.log4j.Logger;
78
import org.json.JSONArray;
@@ -10,6 +11,7 @@
1011
import org.labkey.api.data.AbstractTableInfo;
1112
import org.labkey.api.data.ColumnInfo;
1213
import org.labkey.api.data.Container;
14+
import org.labkey.api.data.ContainerManager;
1315
import org.labkey.api.data.DbSchema;
1416
import org.labkey.api.data.SQLFragment;
1517
import org.labkey.api.data.Selector;
@@ -22,8 +24,12 @@
2224
import org.labkey.api.ldk.LDKService;
2325
import org.labkey.api.ldk.notification.NotificationSection;
2426
import org.labkey.api.ldk.table.ButtonConfigFactory;
27+
import org.labkey.api.module.Module;
28+
import org.labkey.api.module.ModuleLoader;
29+
import org.labkey.api.module.ModuleProperty;
2530
import org.labkey.api.security.User;
26-
import org.labkey.api.services.ServiceRegistry;
31+
import org.labkey.api.security.UserManager;
32+
import org.labkey.api.security.ValidEmail;
2733
import org.labkey.ldk.query.BuiltInColumnsCustomizer;
2834
import org.labkey.ldk.query.ColumnOrderCustomizer;
2935
import org.labkey.ldk.query.DefaultTableCustomizer;
@@ -54,6 +60,7 @@ public class LDKServiceImpl extends LDKService
5460
private List<List<String>> _containerScopedTables = new ArrayList<>();
5561
private Boolean _isNaturalizeInstalled = null;
5662
private Map<String, Map<String, List<ButtonConfigFactory>>> _queryButtons = new CaseInsensitiveHashMap<Map<String, List<ButtonConfigFactory>>>();
63+
private static final String BACKGROUND_USER_PROPNAME = "BackgroundAdminUser";
5764

5865
public LDKServiceImpl()
5966
{
@@ -483,4 +490,31 @@ public void setBrowser(String browser)
483490
_browser = browser;
484491
}
485492
}
493+
494+
public User getBackgroundAdminUser()
495+
{
496+
Module m = ModuleLoader.getInstance().getModule(LDKModule.NAME);
497+
ModuleProperty mp = m.getModuleProperties().get(BACKGROUND_USER_PROPNAME);
498+
String username = StringUtils.trimToNull(mp.getValueContainerSpecific(ContainerManager.getRoot()));
499+
if (username != null)
500+
{
501+
User u = UserManager.getUserByDisplayName(username);
502+
if (u == null)
503+
{
504+
try
505+
{
506+
u = UserManager.getUser(new ValidEmail(username));
507+
}
508+
catch (ValidEmail.InvalidEmailException e)
509+
{
510+
//ignore
511+
512+
}
513+
}
514+
515+
return u;
516+
}
517+
518+
return null;
519+
}
486520
}

0 commit comments

Comments
 (0)