SecurityBean.java 2.35 KB
package fi.insomnia.bortal.beans;

import java.util.Calendar;

import javax.ejb.EJB;
import javax.ejb.Stateless;

import org.slf4j.Logger;

import fi.insomnia.bortal.facade.LogEntryFacade;
import fi.insomnia.bortal.facade.LogEntryTypeFacade;
import fi.insomnia.bortal.model.LogEntry;
import fi.insomnia.bortal.model.LogEntryType;
import fi.insomnia.bortal.model.User;

/**
 * Session Bean implementation class SercurityBean
 */
@Stateless
public class SecurityBean implements SecurityBeanLocal {

    private static final boolean DEBUG = true;

    private final Logger logger = org.slf4j.LoggerFactory.getLogger(SecurityBean.class);
    @EJB
    private LogEntryTypeFacade typeFacade;
    @EJB
    private LogEntryFacade entryFacade;

    @Override
    public LogEntry logPermissionDenied(User user, Exception exception) {
        LogEntry entry = logMessage(SecurityLogType.permissionDenied, user, exception.getMessage());
        logger.debug(entry.toString(), exception);
        return entry;

    }

    public LogEntry logException(User user, Exception exception) {

        LogEntry entry = logMessage(SecurityLogType.unknownException, user, exception.getMessage());
        logger.debug(entry.toString(), exception);
        return entry;
    }

    public LogEntry logMessage(User user, String description) {
        LogEntry entry = logMessage(SecurityLogType.genericMessage, user, description);

        return entry;
    }

    public LogEntry logMessage(String description) {
        LogEntry entry = logMessage(SecurityLogType.genericMessage, description);
        return entry;

    }

    public LogEntry logMessage(SecurityLogType type, String description) {
        return logMessage(type, null, description);
    }

    public LogEntry logMessage( SecurityLogType paramType, User user, String description) {
        LogEntryType type = typeFacade.findOrCreate(paramType);
        LogEntry entry = new LogEntry(Calendar.getInstance());
        entry.setType(type);
        entry.setDescription(description);
        entry.setUser(user);

        entryFacade.create(entry);
        if (DEBUG) {
            logger.debug("SECURITY DEBUG: Type: \"{}\" user \"{}\", description \"{}\"", new String[] { paramType.name(), (user == null)?"null":user.getLogin(), description });
        }
        return entry;
    }

    public void logPermissionDenied(User currentuser, String string) {

    }
}