+++ /dev/null
-package org.argeo.cms.auth;
-
-import java.util.ArrayList;
-import java.util.List;
-import java.util.Map;
-
-import javax.naming.InvalidNameException;
-import javax.naming.ldap.LdapName;
-import javax.transaction.UserTransaction;
-
-import org.apache.commons.logging.Log;
-import org.apache.commons.logging.LogFactory;
-import org.argeo.ArgeoException;
-import org.osgi.service.useradmin.Role;
-import org.osgi.service.useradmin.UserAdmin;
-
-/**
- * Register one or many roles via a user admin service. Does nothing if the role
- * is already registered.
- */
-public class SimpleRoleRegistration implements Runnable {
- private final static Log log = LogFactory
- .getLog(SimpleRoleRegistration.class);
-
- private String role;
- private List<String> roles = new ArrayList<String>();
- private UserAdmin userAdmin;
- private UserTransaction userTransaction;
-
- @Override
- public void run() {
- try {
- userTransaction.begin();
- if (role != null && !roleExists(role))
- newRole(toDn(role));
-
- for (String r : roles)
- if (!roleExists(r))
- newRole(toDn(r));
- userTransaction.commit();
- } catch (Exception e) {
- try {
- userTransaction.rollback();
- } catch (Exception e1) {
- log.error("Cannot rollback", e1);
- }
- throw new ArgeoException("Cannot add roles", e);
- }
- }
-
- private boolean roleExists(String role) {
- return userAdmin.getRole(toDn(role).toString()) != null;
- }
-
- protected void newRole(LdapName r) {
- userAdmin.createRole(r.toString(), Role.GROUP);
- log.info("Added role " + r + " required by application.");
- }
-
- public void register(UserAdmin userAdminService, Map<?, ?> properties) {
- this.userAdmin = userAdminService;
- run();
- }
-
- protected LdapName toDn(String name) {
- try {
- return new LdapName("cn=" + name + ",ou=roles,ou=node");
- } catch (InvalidNameException e) {
- throw new ArgeoException("Badly formatted role name " + name, e);
- }
- }
-
- public void setRole(String role) {
- this.role = role;
- }
-
- public void setRoles(List<String> roles) {
- this.roles = roles;
- }
-
- public void setUserAdmin(UserAdmin userAdminService) {
- this.userAdmin = userAdminService;
- }
-
- public void setUserTransaction(UserTransaction userTransaction) {
- this.userTransaction = userTransaction;
- }
-
-}
import org.apache.commons.logging.Log;
import org.apache.commons.logging.LogFactory;
-import org.argeo.cms.internal.kernel.Activator;
import org.eclipse.core.runtime.IProgressMonitor;
import org.eclipse.core.runtime.NullProgressMonitor;
import org.eclipse.jface.dialogs.IDialogConstants;
import org.eclipse.swt.widgets.Button;
import org.eclipse.swt.widgets.Display;
import org.eclipse.swt.widgets.Shell;
+import org.osgi.framework.FrameworkUtil;
/** Base for login dialogs */
-public abstract class AbstractLoginDialog extends TrayDialog implements
- CallbackHandler {
+public abstract class AbstractLoginDialog extends TrayDialog implements CallbackHandler {
private static final long serialVersionUID = -8046708963512717709L;
private final static Log log = LogFactory.getLog(AbstractLoginDialog.class);
// event).
while (!processCallbacks && (modalContextThread != null)
&& (modalContextThread == Thread.currentThread())
- && Activator.getBundleContext() != null) {
+ && FrameworkUtil.getBundle(AbstractLoginDialog.class).getBundleContext() != null) {
// Note: SecurityUiPlugin.getDefault() != null is false
// when the OSGi runtime is shut down
try {
Thread.sleep(100);
// if (display.isDisposed()) {
- // log.warn("Display is disposed, killing login dialog thread");
+ // log.warn("Display is disposed, killing login
+ // dialog thread");
// throw new ThreadDeath();
// }
} catch (final Exception e) {
// clear callbacks are when cancelling
for (Callback callback : callbacks)
if (callback instanceof PasswordCallback) {
- char[] arr = ((PasswordCallback) callback)
- .getPassword();
+ char[] arr = ((PasswordCallback) callback).getPassword();
if (arr != null) {
Arrays.fill(arr, '*');
- ((PasswordCallback) callback)
- .setPassword(null);
+ ((PasswordCallback) callback).setPassword(null);
}
} else if (callback instanceof NameCallback)
((NameCallback) callback).setName(null);
throw e;
} catch (Exception e) {
isCancelled = true;
- IOException ioe = new IOException(
- "Unexpected issue in login dialog, see root cause for more details");
+ IOException ioe = new IOException("Unexpected issue in login dialog, see root cause for more details");
ioe.initCause(e);
throw ioe;
} finally {
import static org.argeo.cms.CmsMsg.username;
import static org.argeo.cms.auth.AuthConstants.LOGIN_CONTEXT_ANONYMOUS;
import static org.argeo.cms.auth.AuthConstants.LOGIN_CONTEXT_USER;
-import static org.argeo.cms.internal.kernel.Activator.getKernelHeader;
+import static org.argeo.cms.internal.kernel.Activator.getNodeState;
import java.io.IOException;
import java.util.List;
public CmsLogin(CmsView cmsView) {
this.cmsView = cmsView;
- defaultLocale = getKernelHeader().getDefaultLocale();
- List<Locale> locales = getKernelHeader().getLocales();
+ defaultLocale = getNodeState().getDefaultLocale();
+ List<Locale> locales = getNodeState().getLocales();
if (locales != null)
localeChoice = new LocaleChoice(locales, defaultLocale);
loginSelectionListener = new SelectionListener() {
+++ /dev/null
-package org.argeo.security.core;
-
-import java.util.Map;
-
-import javax.security.auth.Subject;
-import javax.security.auth.callback.CallbackHandler;
-import javax.security.auth.login.LoginException;
-import javax.security.auth.spi.LoginModule;
-
-import org.argeo.security.SystemAuth;
-
-public class SystemLoginModule implements LoginModule {
- private Subject subject;
-
- @Override
- public void initialize(Subject subject, CallbackHandler callbackHandler,
- Map<String, ?> sharedState, Map<String, ?> options) {
- this.subject = subject;
- }
-
- @Override
- public boolean login() throws LoginException {
- // TODO check permission?
- return true;
- }
-
- @Override
- public boolean commit() throws LoginException {
- subject.getPrincipals().add(new SystemAuth());
- return true;
- }
-
- @Override
- public boolean abort() throws LoginException {
- return true;
- }
-
- @Override
- public boolean logout() throws LoginException {
- // remove ALL credentials (e.g. additional Jackrabbit credentials)
- subject.getPrincipals().clear();
- return true;
- }
-
-}