package samplest; import com.google.common.base.Optional; import com.google.common.collect.ImmutableMap; import com.google.common.collect.ImmutableSet; import restx.admin.AdminModule; import restx.factory.Module; import restx.factory.Provides; import restx.i18n.SupportedLocale; import restx.security.*; import javax.inject.Named; import java.util.Locale; /** * Date: 1/12/13 * Time: 14:45 */ @Module public class AppModule { private ImmutableMap<String, RestxPrincipal> principals = ImmutableMap.<String, RestxPrincipal>builder() .put("admin", AdminModule.RESTX_ADMIN_PRINCIPAL) .put("user1", new StdUser("user1", ImmutableSet.<String>of("hello"))) .put("user-belonging-to-1234-5678", new StdUser("user-belonging-to-1234-5678", ImmutableSet.<String>of("EDIT_COMPANY_1234_5678"))) .put("user-managing-1234-subcompanies", new StdUser("user-managing-1234-subcompanies", ImmutableSet.<String>of("EDIT_COMPANY_1234_*"))) .put("user-managing-all-companies", new StdUser("user-managing-companies", ImmutableSet.<String>of("EDIT_COMPANY_*_*"))) .put("user-managing-all-parents-for-a-given-subcompany", new StdUser("user-managing-all-parents-for-a-given-subcompany", ImmutableSet.<String>of("EDIT_COMPANY_*_5678"))) .build(); @Provides @Named("restx.app.package") public String appPackage() { return "samplest"; } @Provides public SupportedLocale french() { return new SupportedLocale(Locale.FRENCH); } @Provides public BasicPrincipalAuthenticator basicPrincipalAuthenticator(SecuritySettings securitySettings, final @Named("restx.admin.passwordHash") String adminPasswordHash) { return new StdBasicPrincipalAuthenticator(new UserService<RestxPrincipal>() { @Override public Optional<RestxPrincipal> findUserByName(String name) { return Optional.fromNullable(principals.get(name)); } @Override public Optional<RestxPrincipal> findAndCheckCredentials(String name, String passwordHash) { RestxPrincipal principal = principals.get(name); if (principal == null || !adminPasswordHash.equals(passwordHash)) { return Optional.absent(); } else { return Optional.of(principal); } } }, securitySettings); } }