private static void updateSubDirectoryEntry(SubDirectoryInfo dirInfo, Map<String, Object> fieldMap, String id, boolean canCreateIfOptional) { DocumentModel dirEntry = dirInfo.getSession().getEntry(id); if (dirInfo.getSession().isReadOnly() || (dirEntry != null && isReadOnlyEntry(dirEntry))) { return; } if (dirEntry == null && !canCreateIfOptional) { // entry to update doesn't belong to this directory return; } Map<String, Object> map = new HashMap<>(); map.put(dirInfo.idField, id); for (Entry<String, String> e : dirInfo.fromSource.entrySet()) { map.put(e.getValue(), fieldMap.get(e.getKey())); } if (map.size() > 1) { if (canCreateIfOptional && dirInfo.isOptional && dirEntry == null) { // if entry does not exist, create it dirInfo.getSession().createEntry(map); } else { final DocumentModel entry = BaseSession.createEntryModel(null, dirInfo.dirSchemaName, id, null); entry.setProperties(dirInfo.dirSchemaName, map); dirInfo.getSession().updateEntry(entry); } } }
public void editSelectedDirectoryEntry() { String dirName = currentDirectoryInfo.getName(); try (Session dirSession = dirService.open(dirName)) { setParentColumnIfNull(selectedDirectoryEntry); dirSession.updateEntry(selectedDirectoryEntry); selectedDirectoryEntry = null; // invalidate directory entries list currentDirectoryEntries = null; Events.instance().raiseEvent(EventNames.DIRECTORY_CHANGED, dirName); facesMessages.add(StatusMessage.Severity.INFO, messages.get("vocabulary.entry.edited")); } }
@Override public NuxeoOAuthConsumer storeConsumer(NuxeoOAuthConsumer consumer) { DirectoryService ds = Framework.getService(DirectoryService.class); return Framework.doPrivileged(() -> { try (Session session = ds.open(DIRECTORY_NAME)) { DocumentModel entry = session.createEntry( Collections.singletonMap("consumerKey", consumer.consumerKey)); consumer.asDocumentModel(entry); session.updateEntry(entry); return NuxeoOAuthConsumer.createFromDirectoryEntry(entry, null); } }); }
/** * @since 9.10 */ public boolean update(NuxeoOAuth2Token token) { DirectoryService ds = Framework.getService(DirectoryService.class); return Framework.doPrivileged(() -> { try (Session session = ds.open(DIRECTORY_NAME)) { DocumentModel entry = session.getEntry(String.valueOf(token.getId())); if (entry == null) { return false; } entry.setProperties(NuxeoOAuth2Token.SCHEMA, token.toMap()); session.updateEntry(entry); return true; } }); }
@Override DirectoryEntry run(Session session) { try { DocumentModel docEntry = entry.getDocumentModel(); session.updateEntry(docEntry); return new DirectoryEntry(directory.getName(), session.getEntry(docEntry.getId())); } catch (DirectoryException e) { throw new NuxeoException(e.getMessage(), SC_BAD_REQUEST); } } });
protected NuxeoOAuthToken storeAccessTokenAsDirectoryEntry(NuxeoOAuthToken aToken) { DirectoryService ds = Framework.getService(DirectoryService.class); return Framework.doPrivileged(() -> { try (Session session = ds.open(DIRECTORY_NAME)) { DocumentModel entry = session.getEntry(aToken.getToken()); if (entry == null) { entry = session.createEntry(Collections.singletonMap("token", aToken.getToken())); } aToken.updateEntry(entry); session.updateEntry(entry); return getTokenFromDirectoryEntry(session.getEntry(aToken.getToken())); } }); }
@Override public OAuth2ServiceProvider addProvider(String serviceName, String description, String tokenServerURL, String authorizationServerURL, String userAuthorizationURL, String clientId, String clientSecret, List<String> scopes, Boolean isEnabled) { DirectoryService ds = Framework.getService(DirectoryService.class); try (Session session = ds.open(DIRECTORY_NAME)) { DocumentModel creationEntry = BaseSession.createEntryModel(null, SCHEMA, null, null); DocumentModel entry = Framework.doPrivileged(() -> session.createEntry(creationEntry)); entry.setProperty(SCHEMA, "serviceName", serviceName); entry.setProperty(SCHEMA, "description", description); entry.setProperty(SCHEMA, "authorizationServerURL", authorizationServerURL); entry.setProperty(SCHEMA, "tokenServerURL", tokenServerURL); entry.setProperty(SCHEMA, "userAuthorizationURL", userAuthorizationURL); entry.setProperty(SCHEMA, "clientId", clientId); entry.setProperty(SCHEMA, "clientSecret", clientSecret); entry.setProperty(SCHEMA, "scopes", String.join(",", scopes)); boolean enabled = (clientId != null && clientSecret != null); entry.setProperty(SCHEMA, "enabled", Boolean.valueOf(enabled && (isEnabled == null ? false : isEnabled))); if (!enabled) { log.info("OAuth2 provider for " + serviceName + " is disabled because clientId and/or clientSecret are empty"); } Framework.doPrivileged(() -> session.updateEntry(entry)); return getProvider(serviceName); } }
public NuxeoOAuth2Token refresh(DocumentModel entry, NuxeoOAuth2Token token) { DirectoryService ds = Framework.getService(DirectoryService.class); return Framework.doPrivileged(() -> { try (Session session = ds.open(DIRECTORY_NAME)) { entry.setProperty(NuxeoOAuth2Token.SCHEMA, "accessToken", token.getAccessToken()); entry.setProperty(NuxeoOAuth2Token.SCHEMA, "refreshToken", token.getRefreshToken()); entry.setProperty(NuxeoOAuth2Token.SCHEMA, "creationDate", token.getCreationDate()); entry.setProperty(NuxeoOAuth2Token.SCHEMA, "expirationTimeMilliseconds", token.getExpirationTimeMilliseconds()); session.updateEntry(entry); return getTokenFromDirectoryEntry(entry); } }); }
@Override public OAuth2ServiceProvider updateProvider(String serviceName, OAuth2ServiceProvider provider) { DirectoryService ds = Framework.getService(DirectoryService.class); try (Session session = ds.open(DIRECTORY_NAME)) { DocumentModel entry = getProviderDocModel(serviceName); entry.setProperty(SCHEMA, "serviceName", provider.getServiceName()); entry.setProperty(SCHEMA, "description", provider.getDescription()); entry.setProperty(SCHEMA, "authorizationServerURL", provider.getAuthorizationServerURL()); entry.setProperty(SCHEMA, "tokenServerURL", provider.getTokenServerURL()); entry.setProperty(SCHEMA, "userAuthorizationURL", provider.getUserAuthorizationURL()); entry.setProperty(SCHEMA, "clientId", provider.getClientId()); entry.setProperty(SCHEMA, "clientSecret", provider.getClientSecret()); entry.setProperty(SCHEMA, "scopes", String.join(",", provider.getScopes())); boolean enabled = provider.getClientId() != null && provider.getClientSecret() != null; entry.setProperty(SCHEMA, "enabled", Boolean.valueOf(enabled && provider.isEnabled())); if (!enabled) { log.info("OAuth2 provider for " + serviceName + " is disabled because clientId and/or clientSecret are empty"); } session.updateEntry(entry); return getProvider(serviceName); } }
protected void updateTokenDoc(NuxeoOAuth2Token token, DocumentModel entry) { entry.setProperty(SCHEMA, "serviceName", token.getServiceName()); entry.setProperty(SCHEMA, "nuxeoLogin", token.getNuxeoLogin()); entry.setProperty(SCHEMA, "clientId", token.getClientId()); entry.setProperty(SCHEMA, "isShared", token.isShared()); entry.setProperty(SCHEMA, "sharedWith", token.getSharedWith()); entry.setProperty(SCHEMA, "serviceLogin", token.getServiceLogin()); entry.setProperty(SCHEMA, "creationDate", token.getCreationDate()); Framework.doPrivileged(() -> { DirectoryService ds = Framework.getService(DirectoryService.class); try (Session session = ds.open(TOKEN_DIR)) { session.updateEntry(entry); } }); }