UserBean.java 2.36 KB
package fi.insomnia.intra.web;

import java.util.Random;

import javax.annotation.Resource;
import javax.annotation.security.DeclareRoles;
import javax.ejb.SessionContext;
import javax.ejb.Stateless;
import javax.naming.NamingException;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

import fi.insomnia.intra.dao.IPagingStatus;



/**
 * Session Bean implementation class UserBean
 */
@Stateless
@DeclareRoles(value={"admin","user","manager"})
public class UserBean {
    @Resource
    private SessionContext ctx;

   
    private static final Logger logger = LoggerFactory.getLogger(UserBean.class);
    /**
     * Default constructor. 
     */
    public UserBean() {
	// TODO Auto-generated constructor stub
    }


    public String getUsername()
    {
	return "User "+ctx.getCallerPrincipal().getName()+"in role admin: " + ctx.isCallerInRole("admin");
    }

    public String getRemoteUser() {
	return ctx.getCallerPrincipal().getName();
    }
    public boolean ifGrantedRole(String role) {
	return ctx.isCallerInRole(role);
    }


    private static final int GENERATED_PASSWORD_LENGTH = 10;
    private static final String VALID_PASSWORD_CHARS="";

    private static final String SPECIALCHARS = "!%&|/;:?.,+-_()[]{}#@*";

    private static final String LOWERCASECHARS = "abcdefghjklmnpqrstuvwxyz";

    private static final String UPPERCASECHARS = "ABCDEFGHJKLMNPQRSTUVWXYZ";

    private static final String NUMERALCHARS = "0123456789";
    public String createUserWithGeneratedPassword(String username)
    {	
	return "";
    }


    public static String getRandomString(int count)
    {
	int visibleChars = VALID_PASSWORD_CHARS.length();
	logger.debug("Visble chars: {}",visibleChars);
	Random rng = new Random();
	StringBuilder strBuild = new StringBuilder();
	while(strBuild.length() < count)
	{

	    String selectedStringroup;
	    switch(rng.nextInt(7))
	    {
	    case 0:
	    case 5:
		selectedStringroup = NUMERALCHARS;
		break;
	    case 1:
	    case 4:
		selectedStringroup = UPPERCASECHARS;
		break;
	    case 2:
	    case 3:
		selectedStringroup = LOWERCASECHARS;
		break;
	    case 6:
		selectedStringroup = SPECIALCHARS;
		break;
	    default:
		selectedStringroup = "";

	    }
	    strBuild.append(selectedStringroup.charAt( rng.nextInt(selectedStringroup.length() )));	

	}
	logger.debug("Random string: " + strBuild.toString());
	return strBuild.toString();
    }




}