com.attendance.manage.security.AuthenticationRealm.java Source code

Java tutorial

Introduction

Here is the source code for com.attendance.manage.security.AuthenticationRealm.java

Source

/*
 * Copyright 2005-2013 shopxx.net. All rights reserved.
 * Support: http://www.shopxx.net
 * License: http://www.shopxx.net/license
 */
package com.attendance.manage.security;

import java.util.Date;
import java.util.List;

import org.apache.shiro.authc.AuthenticationInfo;
import org.apache.shiro.authc.IncorrectCredentialsException;
import org.apache.shiro.authc.SimpleAuthenticationInfo;
import org.apache.shiro.authc.UnknownAccountException;
import org.apache.shiro.authc.UsernamePasswordToken;
import org.apache.shiro.authz.AuthorizationInfo;
import org.apache.shiro.authz.SimpleAuthorizationInfo;
import org.apache.shiro.realm.AuthorizingRealm;
import org.apache.shiro.subject.PrincipalCollection;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.stereotype.Component;

import com.attendance.manage.model.Stuff;
import com.attendance.manage.service.StuffService;

/**
 * ???
 * 
 * @author SHOP++ Team
 * @version 3.0
 */
@Component("authenticationRealm")
public class AuthenticationRealm extends AuthorizingRealm {

    @Autowired
    private StuffService stuffServiceImpl;

    /**
     * ???
     * 
     * @param token
     *            
     * @return ??
     */
    @Override
    protected AuthenticationInfo doGetAuthenticationInfo(org.apache.shiro.authc.AuthenticationToken token) {
        System.out.println("in aut");
        UsernamePasswordToken authenticationToken = (UsernamePasswordToken) token;
        String username = authenticationToken.getUsername();
        String password = new String(authenticationToken.getPassword());
        if (username != null && password != null) {
            Stuff admin = stuffServiceImpl.findByUsername(username);
            if (admin == null) {
                throw new UnknownAccountException();
            }

            if (!password.equals(admin.getPassword())) {
                int loginFailureCount = admin.getLoginFailureCount() + 1;
                admin.setLoginFailureCount(loginFailureCount);
                stuffServiceImpl.updateByPrimaryKey(admin);
                throw new IncorrectCredentialsException();
            }
            // md5
            // if (!DigestUtils.md5Hex(password).equals(admin.getPassword())) {
            // int loginFailureCount = admin.getLoginFailureCount() + 1;
            // admin.setLoginFailureCount(loginFailureCount);
            // adminService.updateByPrimaryKey(admin);
            // throw new IncorrectCredentialsException();
            // }
            admin.setLoginDate(new Date());
            admin.setLoginFailureCount(0);
            stuffServiceImpl.updateByPrimaryKey(admin);
            return new SimpleAuthenticationInfo(username, password, getName());

        }
        throw new UnknownAccountException();
    }

    /**
     * ???
     * 
     * @param principals
     *            principals
     * @return ??
     */
    @Override
    protected AuthorizationInfo doGetAuthorizationInfo(PrincipalCollection principals) {
        String username = String.valueOf(principals.getPrimaryPrincipal());
        final Stuff user = stuffServiceImpl.findByUsername(username);
        if (user != null) {
            List<String> authorities = stuffServiceImpl.findAuthorities(user.getId());
            if (authorities != null) {
                SimpleAuthorizationInfo authorizationInfo = new SimpleAuthorizationInfo();
                authorizationInfo.addStringPermissions(authorities);
                return authorizationInfo;
            }
        }
        return null;
    }

}