ParametriAutenticazionePrincipal.java

/*
 * GovWay - A customizable API Gateway 
 * https://govway.org
 * 
 * Copyright (c) 2005-2024 Link.it srl (https://link.it). 
 * 
 * This program is free software: you can redistribute it and/or modify
 * it under the terms of the GNU General Public License version 3, as published by
 * the Free Software Foundation.
 *
 * This program is distributed in the hope that it will be useful,
 * but WITHOUT ANY WARRANTY; without even the implied warranty of
 * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
 * GNU General Public License for more details.
 *
 * You should have received a copy of the GNU General Public License
 * along with this program.  If not, see <http://www.gnu.org/licenses/>.
 *
 */



package org.openspcoop2.pdd.core.autenticazione;

import org.openspcoop2.core.config.constants.TipoAutenticazionePrincipal;
import org.openspcoop2.core.transazioni.utils.TipoCredenzialeMittente;
import org.openspcoop2.utils.BooleanNullable;

/**
 * ParametriAutenticazionePrincipal
 *
 * @author Andrea Poli (apoli@link.it)
 * @author $Author$
 * @version $Rev$, $Date$
 */
public class ParametriAutenticazionePrincipal extends ParametriAutenticazione implements java.io.Serializable {

	
	/**
	 * 
	 */
	private static final long serialVersionUID = 1L;

	public static final String TIPO_AUTENTICAZIONE = "tipoAutenticazione";
	public static final String NOME = "nome";
	public static final String PATTERN = "pattern";
	
	public static final String CLEAN_PRINCIPAL = "cleanPrincipal";
	public static final String CLEAN_PRINCIPAL_TRUE = "true";
	public static final String CLEAN_PRINCIPAL_FALSE = "false";
	
	public static final String TOKEN_CLAIM = "claim";
	public static final String TOKEN_CLAIM_ISSUER = "issuer";
	public static final String TOKEN_CLAIM_SUBJECT = "subject";
	public static final String TOKEN_CLAIM_CLIENT_ID = "clientId";
	public static final String TOKEN_CLAIM_USERNAME = "username";
	public static final String TOKEN_CLAIM_EMAIL = "eMail";
	public static final String TOKEN_CLAIM_CUSTOM = "custom";
	
	public ParametriAutenticazionePrincipal(ParametriAutenticazione parametri) {
		super(parametri);
	}
	
	public TipoAutenticazionePrincipal getTipoAutenticazione() {
		String valore = this.get(TIPO_AUTENTICAZIONE);
		if(valore==null || "".equals(valore)) {
			return null;
		}
		return TipoAutenticazionePrincipal.toEnumConstant(valore);
	}
	
	public String getNome() {
		String valore = this.get(NOME);
		if(valore==null || "".equals(valore)) {
			return null;
		}
		return valore;
	}
	
	public String getPattern() {
		String valore = this.get(PATTERN);
		if(valore==null || "".equals(valore)) {
			return null;
		}
		return valore;
	}
	
	public BooleanNullable getCleanPrincipal() {
		String valore = this.get(CLEAN_PRINCIPAL);
		if(valore==null || "".equals(valore)) {
			return BooleanNullable.NULL();
		}
		if(CLEAN_PRINCIPAL_FALSE.equalsIgnoreCase(valore)) {
			return BooleanNullable.FALSE();
		}
		else if(CLEAN_PRINCIPAL_TRUE.equalsIgnoreCase(valore)) {
			return BooleanNullable.TRUE();
		}
		return BooleanNullable.NULL();
	}
	
	public TipoCredenzialeMittente getTokenClaim() {
		String valore = this.get(TOKEN_CLAIM);
		if(valore==null || "".equals(valore)) {
			return null;
		}
		if(TOKEN_CLAIM_ISSUER.equalsIgnoreCase(valore)) {
			return TipoCredenzialeMittente.TOKEN_ISSUER;
		}
		else if(TOKEN_CLAIM_SUBJECT.equalsIgnoreCase(valore)) {
			return TipoCredenzialeMittente.TOKEN_SUBJECT;
		}
		else if(TOKEN_CLAIM_CLIENT_ID.equalsIgnoreCase(valore)) {
			return TipoCredenzialeMittente.TOKEN_CLIENT_ID;
		}
		else if(TOKEN_CLAIM_USERNAME.equalsIgnoreCase(valore)) {
			return TipoCredenzialeMittente.TOKEN_USERNAME;
		}
		else if(TOKEN_CLAIM_EMAIL.equalsIgnoreCase(valore)) {
			return TipoCredenzialeMittente.TOKEN_EMAIL;
		}
		else if(TOKEN_CLAIM_CUSTOM.equalsIgnoreCase(valore)) {
			return TipoCredenzialeMittente.TRASPORTO; // uso trasporto come custom
		}
		return null;
	}
}