package net.sourceforge.fenixedu.applicationTier.Servico.publico;

import net.sourceforge.fenixedu.applicationTier.FenixService;
import net.sourceforge.fenixedu.applicationTier.Servico.exceptions.FenixServiceException;
import net.sourceforge.fenixedu.applicationTier.security.PasswordEncryptor;
import net.sourceforge.fenixedu.domain.Person;
import net.sourceforge.fenixedu.presentationTier.Action.publico.LoginRequestBean;
import pt.ist.fenixWebFramework.services.Service;

public class EnableExternalLoginWithKerberos extends FenixService {

    @Service
    public static void run(LoginRequestBean bean) throws FenixServiceException {
        Person person = bean.getPerson();
        if (person.getUser().getLoginRequest() != null) {
            // try {
            person.setGender(bean.getGender());
            person.setDefaultPhoneNumber(bean.getPhone());
            person.setPassword(PasswordEncryptor.encryptPassword(bean.getPassword()));
            // Script.createUser(person.getIstUsername(),
            // bean.getPassword());
            // person.setIsPassInKerberos(true);
            person.getUser().getLoginRequest().delete();
            // } catch (ExcepcaoPersistencia e) {
            // throw new
            // FenixServiceException("error.person.impossible.change");
            // } catch (KerberosException ke) {
            // if (ke.getExitCode() == 1) {
            // String returnCode = ke.getReturnCode();
            // if
            // (returnCode.equals(KerberosException.CHANGE_PASSWORD_TOO_SHORT)
            // || returnCode.equals(KerberosException.
            // CHANGE_PASSWORD_NOT_ENOUGH_CHARACTER_CLASSES)
            // ||
            // returnCode.equals(KerberosException.CHANGE_PASSWORD_CANNOT_REUSE)
            // || returnCode.equals(KerberosException.
            // ADD_NOT_ENOUGH_CHARACTER_CLASSES)
            // || returnCode.equals(KerberosException.ADD_TOO_SHORT)
            // ||
            // returnCode.equals(KerberosException.CHECK_PASSWORD_LOW_QUALITY))
            // {
            // throw new InvalidPasswordServiceException(returnCode);
            // } else if (returnCode.equals(KerberosException.WRONG_PASSWORD)) {
            // throw new InvalidPasswordServiceException(
            // "error.person.invalidExistingPassword");
            // } else {
            // throw new
            // InvalidPasswordServiceException("error.person.impossible.change"
            // );
            // }
            // }
            // }
        } else {
            throw new FenixServiceException("error.request.already.used");
        }
    }
}