package de.rwth.idsg.bikeman.ixsi.processor.query.user; import com.google.common.base.Optional; import de.rwth.idsg.bikeman.ixsi.ErrorFactory; import de.rwth.idsg.bikeman.ixsi.processor.api.UserRequestProcessor; import de.rwth.idsg.bikeman.ixsi.repository.IxsiUserRepository; import de.rwth.idsg.bikeman.web.rest.exception.DatabaseException; import lombok.extern.slf4j.Slf4j; import org.springframework.beans.factory.annotation.Autowired; import org.springframework.stereotype.Component; import xjc.schema.ixsi.ErrorType; import xjc.schema.ixsi.Language; import xjc.schema.ixsi.TokenGenerationRequestType; import xjc.schema.ixsi.TokenGenerationResponseType; import xjc.schema.ixsi.UserInfoType; /** * @author Sevket Goekay <goekay@dbis.rwth-aachen.de> * @since 26.09.2014 */ @Slf4j @Component public class TokenGenerationRequestProcessor implements UserRequestProcessor<TokenGenerationRequestType, TokenGenerationResponseType> { @Autowired private IxsiUserRepository ixsiUserRepository; @Override public Class<TokenGenerationRequestType> getProcessingClass() { return TokenGenerationRequestType.class; } @Override public TokenGenerationResponseType processAnonymously(TokenGenerationRequestType request, Optional<Language> lan) { return buildError(ErrorFactory.Auth.notAnonym("Anonymous token generation makes no sense", null)); } @Override public TokenGenerationResponseType processForUser(TokenGenerationRequestType request, Optional<Language> lan, UserInfoType userInfo) { try { String token = ixsiUserRepository.setUserToken(userInfo.getUserID(), userInfo.getPassword()); return new TokenGenerationResponseType().withToken(token); } catch (DatabaseException e) { log.error("Error occurred", e); return buildError(ErrorFactory.Sys.backendFailed(e.getLocalizedMessage(), null)); } } // ------------------------------------------------------------------------- // Error handling // ------------------------------------------------------------------------- @Override public TokenGenerationResponseType buildError(ErrorType e) { return new TokenGenerationResponseType().withError(e); } }