Search in sources :

Example 1 with Token

use of org.platformlayer.auth.model.Token in project platformlayer by platformlayer.

the class TokensResource method validateToken.

@GET
// @HEAD support is automatic from the @GET
@Path("{tokenId}")
public ValidateTokenResponse validateToken(@PathParam("tokenId") String checkToken, @QueryParam("project") String project) {
    try {
        requireSystemAccess();
    } catch (AuthenticatorException e) {
        log.warn("Error while checking system token", e);
        throwInternalError();
    }
    TokenInfo checkTokenInfo = tokenService.decodeToken(checkToken);
    if (checkTokenInfo == null || checkTokenInfo.hasExpired()) {
        throw404NotFound();
    }
    UserEntity userEntity = null;
    try {
        userEntity = userAuthenticator.getUserFromToken(checkTokenInfo.userId, checkTokenInfo.tokenSecret);
    } catch (AuthenticatorException e) {
        log.warn("Error while fetching user", e);
        throwInternalError();
    }
    ValidateTokenResponse response = new ValidateTokenResponse();
    response.access = new ValidateAccess();
    response.access.user = Mapping.mapToUserValidation(userEntity);
    response.access.token = new Token();
    response.access.token.expires = checkTokenInfo.expiration;
    response.access.token.id = checkToken;
    String checkProject = project;
    if (checkProject != null) {
        ProjectEntity projectEntity = null;
        try {
            projectEntity = userAuthenticator.findProject(checkProject);
        } catch (AuthenticatorException e) {
            log.warn("Error while fetching project", e);
            throwInternalError();
        }
        if (projectEntity == null) {
            throw404NotFound();
        }
        projectEntity.unlockWithUser(userEntity);
        if (!projectEntity.isSecretValid()) {
            throw404NotFound();
        }
        UserProjectEntity userProject = null;
        try {
            userProject = userAuthenticator.findUserProject(userEntity, projectEntity);
        } catch (AuthenticatorException e) {
            log.warn("Error while fetching project", e);
            throwInternalError();
        }
        if (userProject == null) {
            // Not a member of project
            throw404NotFound();
        }
        response.access.project = Mapping.mapToProject(projectEntity);
        response.access.project.roles = Mapping.mapToRoles(userProject.getRoles());
    }
    return response;
}
Also used : ValidateTokenResponse(org.platformlayer.auth.model.ValidateTokenResponse) ValidateAccess(org.platformlayer.auth.model.ValidateAccess) UserProjectEntity(org.platformlayer.auth.UserProjectEntity) ProjectEntity(org.platformlayer.auth.ProjectEntity) AuthenticatorException(org.platformlayer.auth.AuthenticatorException) Token(org.platformlayer.auth.model.Token) UserProjectEntity(org.platformlayer.auth.UserProjectEntity) TokenInfo(org.platformlayer.auth.services.TokenInfo) UserEntity(org.platformlayer.auth.UserEntity) Path(javax.ws.rs.Path) GET(javax.ws.rs.GET)

Example 2 with Token

use of org.platformlayer.auth.model.Token in project platformlayer by platformlayer.

the class TokenHelpers method buildAccess.

public Access buildAccess(UserEntity user) {
    byte[] tokenSecret = authSecrets.buildToken(user.getUserSecret());
    TokenInfo token = buildToken("" + user.getId(), tokenSecret);
    Access access = new Access();
    // response.access.serviceCatalog = serviceMapper.getServices(userInfo,
    // project);
    access.token = new Token();
    access.token.expires = token.expiration;
    access.token.id = tokenService.encodeToken(token);
    access.projects = Lists.newArrayList();
    try {
        for (ProjectEntity project : userAuthenticator.listProjects(user)) {
            access.projects.add(project.getName());
        }
    } catch (RepositoryException e) {
        log.warn("Error while listing projects for user: " + user.key, e);
        throw new IllegalStateException("Error listing projects for user", e);
    }
    return access;
}
Also used : ProjectEntity(org.platformlayer.auth.ProjectEntity) Access(org.platformlayer.auth.model.Access) Token(org.platformlayer.auth.model.Token) RepositoryException(org.platformlayer.RepositoryException)

Aggregations

ProjectEntity (org.platformlayer.auth.ProjectEntity)2 Token (org.platformlayer.auth.model.Token)2 GET (javax.ws.rs.GET)1 Path (javax.ws.rs.Path)1 RepositoryException (org.platformlayer.RepositoryException)1 AuthenticatorException (org.platformlayer.auth.AuthenticatorException)1 UserEntity (org.platformlayer.auth.UserEntity)1 UserProjectEntity (org.platformlayer.auth.UserProjectEntity)1 Access (org.platformlayer.auth.model.Access)1 ValidateAccess (org.platformlayer.auth.model.ValidateAccess)1 ValidateTokenResponse (org.platformlayer.auth.model.ValidateTokenResponse)1 TokenInfo (org.platformlayer.auth.services.TokenInfo)1