package eu.dnetlib.enabling.ui.server.auth;

import java.util.Properties;

import org.springframework.beans.factory.annotation.Required;

/**
 * Authenticates users against a static property files. It allows defining multiple users.
 *
 * @author marko
 *
 */
public class AuthenticationManagerProperties implements AuthenticationManager {
	/**
	 * property file containing users as keys and passwords as values
	 */
	private Properties authProp;

	/**
	 * {@inheritDoc}
	 * @see eu.dnetlib.enabling.ui.server.auth.AuthenticationManager#authenticate(java.lang.String, java.lang.String)
	 */
	public Principal authenticate(final String login, final String password) {
		if (!authProp.containsKey(login)) return null;
		if (!authProp.getProperty(login).equals(password)) return null;
		return new Principal(login, null);
	}

	/**
	 * {@inheritDoc}
	 *
	 * @see eu.dnetlib.enabling.ui.server.auth.AuthenticationManager#authorize(eu.dnetlib.enabling.ui.server.auth.Principal)
	 */
	public boolean authorize(final Principal principal) {
		if (principal == null)
			return false;
		if (authProp.containsKey(principal.getUserName()))
			return true;
		return false;
	}

	@Override
	public boolean authorize(Principal principal, String resource, String action) {
		return authorize(principal);
	}

	
	
	public Properties getAuthProp() {
		return authProp;
	}

	@Required
	public void setAuthProp(final Properties authProp) {
		this.authProp = authProp;
	}

	
}
