voidpt.security.VoidCustomRealm.java Source code

Java tutorial

Introduction

Here is the source code for voidpt.security.VoidCustomRealm.java

Source

/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/

package voidpt.security;

import javax.enterprise.context.spi.CreationalContext;
import javax.enterprise.inject.spi.Bean;
import javax.enterprise.inject.spi.BeanManager;
import javax.enterprise.inject.spi.CDI;
import javax.persistence.EntityNotFoundException;
import org.apache.shiro.authc.AuthenticationException;
import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.AuthenticationToken;
import org.apache.shiro.authc.SaltedAuthenticationInfo;
import org.apache.shiro.authc.SimpleAccount;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.realm.jdbc.JdbcRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import voidpt.ejb.UserBean;
import voidpt.entity.User;

/**
 *
 * @author mcampos
 */
public class VoidCustomRealm extends JdbcRealm {

    private UserBean userbean;

    // Inicialization of the logger
    final Logger log = LoggerFactory.getLogger(this.getClass());

    @Override
    public boolean supports(AuthenticationToken token) {
        return true;
    }

    protected AuthenticationInfo getInfo(String email) {
        if (email == null) {
            log.info("Empty Username");
            throw new UnknownAccountException("Empty Username");
        }

        if (this.userbean == null) {
            this.userbean = getUserBean();
        }

        User user;

        try {
            user = this.userbean.getUserByEmail(email);
        } catch (EntityNotFoundException ex) {
            log.info("Not found");
            throw new UnknownAccountException("Not found");
        }

        return new VoidSaltedAuthenticationInfo(email, user.getPassword(), user.getSalt());

    }

    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(AuthenticationToken token) throws AuthenticationException {
        UsernamePasswordToken userPassToken = (UsernamePasswordToken) token;
        return this.getInfo(userPassToken.getUsername());
    }

    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        log.info("doGetAuthorizationInfo to be implemented");
        throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates.

    }

    private UserBean getUserBean() {
        BeanManager beanManager = CDI.current().getBeanManager();
        Bean xbean = (Bean) beanManager.getBeans(UserBean.class).iterator().next();
        CreationalContext cc = beanManager.createCreationalContext(xbean);
        return (UserBean) beanManager.getReference(xbean, UserBean.class, cc);
    }

}