package restx.security;
import com.google.common.base.Function;
import com.google.common.base.Optional;
import restx.factory.Module;
import restx.factory.Provides;
import javax.inject.Named;
/**
*/
@Module(priority = 10000)
public class BasicSecurityModule {
@Provides
@Named(RestxPrincipal.SESSION_DEF_KEY)
public RestxSession.Definition.Entry principalSessionEntry(final BasicPrincipalAuthenticator authenticator) {
return new DefaultSessionDefinitionEntry<>(RestxPrincipal.class, RestxPrincipal.SESSION_DEF_KEY,
new Function<String, Optional<? extends RestxPrincipal>>() {
@Override
public Optional<? extends RestxPrincipal> apply(String key) {
return authenticator.findByName(key);
}
});
}
@Provides
@Named(Session.SESSION_DEF_KEY)
public RestxSession.Definition.Entry sessionKeySessionEntry() {
return new DefaultSessionDefinitionEntry<>(String.class, Session.SESSION_DEF_KEY,
new Function<String, Optional<? extends String>>() {
@Override
public Optional<? extends String> apply(String key) {
return Optional.fromNullable(key);
}
});
}
}