Skip to content
This repository has been archived by the owner on Nov 9, 2017. It is now read-only.

Commit

Permalink
Merge branch 'master' into workspaceDesign
Browse files Browse the repository at this point in the history
  • Loading branch information
Alex Eng committed Sep 11, 2012
2 parents e41235a + c8022ce commit d7bd843
Show file tree
Hide file tree
Showing 8 changed files with 135 additions and 26 deletions.
32 changes: 32 additions & 0 deletions zanata-war/pom.xml
Expand Up @@ -377,6 +377,38 @@
</dependencies>
</plugin>


<!--
This is to make the GWT plugin happy (http://code.google.com/p/google-web-toolkit/issues/detail?id=4600).
Taken from https://issues.sonatype.org/browse/MNGECLIPSE-864?focusedCommentId=148457&page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel#comment-148457
See also https://code.google.com/p/gwt-m2e/
-->
<plugin>
<groupId>com.google.code.maven-replacer-plugin</groupId>
<artifactId>maven-replacer-plugin</artifactId>
<version>1.4.0</version>
<executions>
<execution>
<phase>clean</phase>
<goals>
<goal>replace</goal>
</goals>
</execution>
</executions>
<configuration>
<ignoreMissingFile>true</ignoreMissingFile>
<file>.classpath</file>
<regex>false</regex>
<replacements>
<replacement>
<xpath>/classpath/classpathentry[@path='src/main/resources' and @kind='src' and @excluding='**']/@excluding</xpath>
<token>**</token>
<value></value>
</replacement>
</replacements>
</configuration>
</plugin>

</plugins>

<pluginManagement>
Expand Down
5 changes: 4 additions & 1 deletion zanata-war/src/etc/zanata.properties
Expand Up @@ -11,4 +11,7 @@
# can be active simultaneously)
# Valid key values: zanata.security.auth.policy.internal, .kerberos, .openid, .jaas
zanata.security.auth.policy.internal = zanata.internal
zanata.security.auth.policy.openid = zanata.openid
zanata.security.auth.policy.openid = zanata.openid

# Users that should be made administrators upon bootstrap or registration.
zanata.security.admin.users = user1,user2,user3
22 changes: 22 additions & 0 deletions zanata-war/src/main/java/org/zanata/ApplicationConfiguration.java
Expand Up @@ -44,11 +44,13 @@
import java.util.ArrayList;
import java.util.Arrays;
import java.util.HashMap;
import java.util.HashSet;
import java.util.List;
import java.util.ListResourceBundle;
import java.util.Map;
import java.util.MissingResourceException;
import java.util.ResourceBundle;
import java.util.Set;

@Name("applicationConfiguration")
@Scope(ScopeType.APPLICATION)
Expand All @@ -64,6 +66,7 @@ public class ApplicationConfiguration implements Serializable
public static final String EVENT_CONFIGURATION_CHANGED = "zanata.configuration.changed";

private static final String KEY_AUTH_POLICY = "zanata.security.auth.policy";
private static final String KEY_ADMIN_USERS = "zanata.security.admin.users";

private static final String[] allConfigKeys = new String[]
{
Expand Down Expand Up @@ -93,6 +96,7 @@ public class ApplicationConfiguration implements Serializable
private String buildTimestamp;
private boolean enableCopyTrans = true;
private Map<AuthenticationType, String> loginModuleNames = new HashMap<AuthenticationType, String>();
private Set<String> adminUsers = new HashSet<String>();

@Observer( { EVENT_CONFIGURATION_CHANGED })
@Create
Expand All @@ -119,6 +123,8 @@ public void load()
private void loadExternalConfig()
{
ResourceBundle config = getExternalConfig();

// Authentication policies
for( AuthenticationType authType : AuthenticationType.values() )
{
String key = KEY_AUTH_POLICY + "." + authType.name().toLowerCase();
Expand All @@ -127,6 +133,17 @@ private void loadExternalConfig()
loginModuleNames.put( authType, config.getString(key) );
}
}

// Admin users
if( config.containsKey( KEY_ADMIN_USERS ) )
{
String userList = config.getString( KEY_ADMIN_USERS );

for( String userName : userList.split(",") )
{
adminUsers.add( userName.trim() );
}
}
}

/**
Expand Down Expand Up @@ -349,6 +366,11 @@ public boolean getEnableCopyTrans()
return enableCopyTrans;
}

public Set<String> getAdminUsers()
{
return new HashSet<String>( adminUsers );
}

public boolean isEmailLogAppenderEnabled()
{
String strVal = configValues.get(HApplicationConfiguration.KEY_EMAIL_LOG_EVENTS);
Expand Down
36 changes: 26 additions & 10 deletions zanata-war/src/main/java/org/zanata/action/LoginAction.java
Expand Up @@ -95,17 +95,33 @@ public void setAuthProvider(String authProvider)
*/
private void configureAuthentication()
{
try
// All others
if( authProvider == null )
{
// If it is open Id
OpenIdProviderType providerType = OpenIdProviderType.valueOf(authProvider);
this.authType = AuthenticationType.OPENID;
zanataOpenId.setProvider(providerType);
if( applicationConfiguration.isInternalAuth() )
{
this.authType = AuthenticationType.INTERNAL;
}
else if( applicationConfiguration.isJaasAuth() )
{
this.authType = AuthenticationType.JAAS;
}
}
catch (IllegalArgumentException e)
// Open Id / internal auth
else
{
// If it's not open id, it might be another authentication type
this.authType = AuthenticationType.valueOf(authProvider);
try
{
// If it is open Id
OpenIdProviderType providerType = OpenIdProviderType.valueOf(authProvider);
this.authType = AuthenticationType.OPENID;
zanataOpenId.setProvider(providerType);
}
catch (Exception e)
{
// If it's not open id, it might be another authentication type
this.authType = AuthenticationType.valueOf(authProvider);
}
}
}

Expand Down Expand Up @@ -177,13 +193,13 @@ private String loginWithOpenId()

private String loginWithInternal()
{
credentials.setUsername( username );
//credentials.setUsername( username );
return this.identity.login(authType);
}

private String loginWithJaas()
{
credentials.setUsername( username );
//credentials.setUsername( username );
return this.identity.login(authType);
}

Expand Down
Expand Up @@ -32,8 +32,10 @@
import org.jboss.seam.annotations.Scope;
import org.jboss.seam.security.RunAsOperation;
import org.jboss.seam.security.management.IdentityStore;
import org.zanata.ApplicationConfiguration;
import org.zanata.dao.AccountActivationKeyDAO;
import org.zanata.dao.AccountDAO;
import org.zanata.dao.AccountRoleDAO;
import org.zanata.dao.PersonDAO;
import org.zanata.model.HAccount;
import org.zanata.model.HAccountActivationKey;
Expand Down Expand Up @@ -65,10 +67,34 @@ public class RegisterServiceImpl implements RegisterService

@In
PersonDAO personDAO;

@In
AccountRoleDAO accountRoleDAO;

@In
AccountActivationKeyDAO accountActivationKeyDAO;

@In
ApplicationConfiguration applicationConfiguration;


/**
* Performs post-processing logic after registering an account.
*
* @param account The account that has just been created.
*/
private void postProcessRegisteredAccount( final HAccount account )
{
if( applicationConfiguration.getAdminUsers().contains( account.getUsername() ) )
{
HAccountRole adminRole = accountRoleDAO.findByName("admin");
if( adminRole != null )
{
account.getRoles().add( adminRole );
}
}
}

public String register(final String username, final String password, String name, String email)
{
new RunAsOperation()
Expand All @@ -85,6 +111,8 @@ public void execute()
person.setAccount(account);
person.setEmail(email);
person.setName(name);

this.postProcessRegisteredAccount(account);
personDAO.makePersistent(person);

HAccountActivationKey key = new HAccountActivationKey();
Expand Down Expand Up @@ -113,6 +141,8 @@ public void execute()
person.setAccount(account);
person.setEmail(email);
person.setName(name);

this.postProcessRegisteredAccount(account);
personDAO.makePersistent(person);

HAccountActivationKey key = new HAccountActivationKey();
Expand Down
31 changes: 18 additions & 13 deletions zanata-war/src/main/java/org/zanata/util/EssentialDataCreator.java
Expand Up @@ -20,6 +20,7 @@
import org.zanata.dao.AccountRoleDAO;
import org.zanata.dao.LocaleDAO;
import org.zanata.model.HAccount;
import org.zanata.model.HAccountRole;
import org.zanata.model.HLocale;
import org.zanata.model.HPerson;

Expand Down Expand Up @@ -117,21 +118,25 @@ public void prepare()
adminExists = false;
}

if (!adminExists && applicationConfiguration.isInternalAuth())
for( String adminUsername : applicationConfiguration.getAdminUsers() )
{
log.warn("No admin users found: creating default user 'admin'");

HAccount account = accountDAO.create(username, password, true);
account.setApiKey(apiKey);
account.getRoles().add(accountRoleDAO.findByName("admin"));
account.getRoles().add(accountRoleDAO.findByName("user"));
accountDAO.flush();
HPerson person = new HPerson();
person.setAccount(account);
person.setEmail(email);
person.setName(name);
entityManager.persist(person);
HAccount adminAccount = accountDAO.getByUsername( adminUsername );
HAccountRole adminRole = accountRoleDAO.findByName("admin");
if( adminAccount != null && !adminAccount.getRoles().contains( adminRole ) )
{
log.info("Making user " + adminAccount.getUsername() + " a system admin.");
adminAccount.getRoles().add( adminRole );
accountDAO.makePersistent(adminAccount);
accountDAO.flush();
adminExists = true;
}
}

if (!adminExists)
{
log.warn("No admin users found. Admin users can be enabled in zanata.properties");
}

if (!accountRoleDAO.roleExists("translator"))
{
log.info("Creating 'translator' role");
Expand Down
4 changes: 2 additions & 2 deletions zanata-war/src/main/webapp/iteration/copy_trans.xhtml
Expand Up @@ -110,8 +110,8 @@

</rich:panel>

<s:button value="#{messages['jsf.Start']}" action="#{copyTransAction.startCopyTrans}"/>
<s:button value="#{messages['jsf.Cancel']}" action="#{copyTransAction.cancel}"/>
<h:commandButton value="#{messages['jsf.Start']}" action="#{copyTransAction.startCopyTrans}"/>
<h:commandButton value="#{messages['jsf.Cancel']}" action="#{copyTransAction.cancel}"/>
</a4j:outputPanel>
</a4j:form>

Expand Down
1 change: 1 addition & 0 deletions zanata-war/src/test/resources/zanata.properties
Expand Up @@ -10,4 +10,5 @@
# (Only one can be selected, excepted for internal and openid which
# can be active simultaneously)
# Valid key values: zanata.security.auth.policy.internal, .kerberos, .openid, .jaas

zanata.security.auth.policy.internal = zanata

0 comments on commit d7bd843

Please sign in to comment.