package fi.otavanopisto.pyramus.rest.controller;
import javax.ejb.Stateless;
import javax.enterprise.context.Dependent;
import javax.inject.Inject;
import fi.otavanopisto.pyramus.dao.clientapplications.ClientApplicationAccessTokenDAO;
import fi.otavanopisto.pyramus.dao.clientapplications.ClientApplicationAuthorizationCodeDAO;
import fi.otavanopisto.pyramus.dao.clientapplications.ClientApplicationDAO;
import fi.otavanopisto.pyramus.domainmodel.clientapplications.ClientApplication;
import fi.otavanopisto.pyramus.domainmodel.clientapplications.ClientApplicationAccessToken;
import fi.otavanopisto.pyramus.domainmodel.clientapplications.ClientApplicationAuthorizationCode;
import fi.otavanopisto.pyramus.domainmodel.users.User;
@Dependent
@Stateless
public class OauthController {
@Inject
private ClientApplicationDAO clientApplicationDAO;
@Inject
private ClientApplicationAuthorizationCodeDAO clientApplicationAuthorizationCodeDAO;
@Inject
private ClientApplicationAccessTokenDAO clientApplicationAccessTokenDAO;
public ClientApplicationAccessToken createAccessToken(String accessToken, String refreshToken, Long expires, ClientApplication clientApplication, ClientApplicationAuthorizationCode clientApplicationAuthorizationCode) {
return clientApplicationAccessTokenDAO.create(accessToken, refreshToken, expires, clientApplication, clientApplicationAuthorizationCode);
}
public ClientApplicationAuthorizationCode createAuthorizationCode(User user, ClientApplication clientApplication, String authorizationCode, String redirectUrl){
return clientApplicationAuthorizationCodeDAO.create(user, clientApplication, authorizationCode, redirectUrl);
}
public ClientApplicationAccessToken findByAccessToken(String accessToken) {
return clientApplicationAccessTokenDAO.findByAccessToken(accessToken);
}
public ClientApplicationAccessToken findByRefreshToken(String refreshToken) {
return clientApplicationAccessTokenDAO.findByRefreshToken(refreshToken);
}
public ClientApplication findByClientIdAndClientSecret(String clientId, String clientSecret) {
return clientApplicationDAO.findByClientIdAndClientSecret(clientId, clientSecret);
}
public ClientApplicationAuthorizationCode findByClientApplicationAndAuthorizationCode(ClientApplication clientApplication, String authorizationCode) {
return clientApplicationAuthorizationCodeDAO.findByClientApplicationAndAuthorizationCode(authorizationCode, clientApplication);
}
public ClientApplicationAccessToken findByClientApplicationAuthorizationCode(ClientApplicationAuthorizationCode clientApplicationAuthorizationCode){
return clientApplicationAccessTokenDAO.findByAuthCode(clientApplicationAuthorizationCode);
}
public ClientApplicationAccessToken refresh(ClientApplicationAccessToken clientApplicationAccessToken, Long expires, String accessToken){
return clientApplicationAccessTokenDAO.updateAccessToken(clientApplicationAccessTokenDAO.updateExpires(clientApplicationAccessToken, expires), accessToken);
}
public ClientApplicationAccessToken renewAccessToken(ClientApplicationAccessToken clientApplicationAccessToken, Long expires, String accessToken, String refreshToken) {
clientApplicationAccessTokenDAO.updateRefreshToken(clientApplicationAccessToken, refreshToken);
clientApplicationAccessTokenDAO.updateAccessToken(clientApplicationAccessToken, accessToken);
clientApplicationAccessTokenDAO.updateExpires(clientApplicationAccessToken, expires);
return clientApplicationAccessToken;
}
public void deleteAccessToken(ClientApplicationAccessToken clientApplicationAccessToken){
clientApplicationAccessTokenDAO.delete(clientApplicationAccessToken);
}
}