Package eu.planets_project.pp.plato.util

Source Code of eu.planets_project.pp.plato.util.PlanetsUserManager

/*******************************************************************************
* Copyright (c) 2006-2010 Vienna University of Technology,
* Department of Software Technology and Interactive Systems
*
* All rights reserved. This program and the accompanying
* materials are made available under the terms of the
* Apache License, Version 2.0 which accompanies
* this distribution, and is available at
* http://www.apache.org/licenses/LICENSE-2.0
*******************************************************************************/
package eu.planets_project.pp.plato.util;

import java.util.Set;

import javax.faces.context.FacesContext;
import javax.naming.Context;
import javax.naming.NamingException;
import javax.rmi.PortableRemoteObject;
import javax.servlet.http.HttpServletRequest;

import eu.planets_project.ifr.core.security.api.services.UserManager;
import eu.planets_project.ifr.core.security.api.services.UserManager.UserNotFoundException;
import eu.planets_project.pp.plato.model.Role;
import eu.planets_project.pp.plato.model.User;

public class PlanetsUserManager implements IUserManager {

    private static PlanetsUserManager planetsUserManager = null;

    private PlanetsUserManager() {

    }

    public static PlanetsUserManager createUserManager() {
        if (planetsUserManager == null) {
            planetsUserManager = new PlanetsUserManager();
        }

        return planetsUserManager;
    }

    public String getLoggedInUserId() {

        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();

        return request.getRemoteUser();
    }

    public User getLoggedInUser() {

        UserManager um = getPlanetsUserManager();
        if(um == null) {
            return null;
        }

        FacesContext context = FacesContext.getCurrentInstance();
        HttpServletRequest request = (HttpServletRequest) context.getExternalContext().getRequest();

        String userId = request.getRemoteUser();

        eu.planets_project.ifr.core.security.api.model.User planetsUser = null;
        try {
            planetsUser = um.getUserByUsername(userId);
        } catch(UserNotFoundException e){
            return null;
        }

        User user = new User();

        user.setUsername(planetsUser.getUsername());
        user.setFirstName(planetsUser.getFirstName());
        user.setLastName(planetsUser.getLastName());
       
        Set<eu.planets_project.ifr.core.security.api.model.Role> planetsRoles = planetsUser.getRoles();
       
        for (eu.planets_project.ifr.core.security.api.model.Role r : planetsRoles) {
            Role role = new Role();
            role.setName(r.getName());
            user.getRoles().add(role);
        }
       
        return user;
    }

    /**
     * Create a user manager:
     * @return
     */
    public static UserManager getPlanetsUserManager(){
        try{
            Context jndiContext = new javax.naming.InitialContext();
            UserManager um = (UserManager) PortableRemoteObject.narrow(jndiContext.lookup("planets-project.eu/UserManager/remote"), UserManager.class);
            return um;
        }catch (NamingException e) {
            PlatoLogger.getLogger(PlanetsUserManager.class).error(e.getMessage(),e);
            return null;
        }
    }
}
TOP

Related Classes of eu.planets_project.pp.plato.util.PlanetsUserManager

TOP
Copyright © 2018 www.massapi.com. All rights reserved.
All source code are property of their respective owners. Java is a trademark of Sun Microsystems, Inc and owned by ORACLE Inc. Contact coftware#gmail.com.