use of cz.metacentrum.perun.core.api.exceptions.UserExtSourceExistsException in project perun by CESNET.
the class LifeScienceHostelRIAcc method approveApplication.
/**
* Create proper UserExtSource
*/
@Override
public Application approveApplication(PerunSession session, Application app) throws PrivilegeException, GroupNotExistsException, MemberNotExistsException, ExternallyManagedException, WrongReferenceAttributeValueException, WrongAttributeValueException, RegistrarException, ExtSourceNotExistsException, AttributeNotExistsException, WrongAttributeAssignmentException, VoNotExistsException, ExtendMembershipException, AlreadyMemberException {
PerunBl perun = (PerunBl) session.getPerun();
User user = app.getUser();
if (user != null) {
// Create UES for user
Attribute userLogin = perun.getAttributesManagerBl().getAttribute(session, user, AttributesManager.NS_USER_ATTR_DEF + ":" + LOGIN_NAMESPACE);
if (userLogin != null && userLogin.getValue() != null) {
ExtSource extSource = perun.getExtSourcesManagerBl().getExtSourceByName(session, LS_HOSTEL_EXT_SOURCE_NAME);
String login = userLogin.valueAsString();
UserExtSource ues = new UserExtSource(extSource, login + LS_HOSTEL_SCOPE);
ues.setLoa(0);
try {
perun.getUsersManagerBl().addUserExtSource(session, user, ues);
} catch (UserExtSourceExistsException ex) {
// this is OK
}
}
if (Application.AppType.INITIAL.equals(app.getType())) {
try {
Vo vo = perun.getVosManagerBl().getVoByShortName(session, VO_SHORTNAME);
Member member = perun.getMembersManagerBl().createMember(session, vo, user);
log.debug("LS Hostel member added to the main VO Lifescience {}", member);
} catch (VoNotExistsException e) {
log.warn("VO: " + VO_SHORTNAME + " not exists, can't add member into it.");
} catch (AlreadyMemberException ignore) {
// user is already in lifescience
} catch (ExtendMembershipException e) {
// can't be member of lifescience, shouldn't happen
log.error("LS Hostel member can't be added to VO: " + VO_SHORTNAME, e);
}
}
// User doesn't have login - don't set UES
}
return app;
}
use of cz.metacentrum.perun.core.api.exceptions.UserExtSourceExistsException in project perun by CESNET.
the class Vsup method beforeApprove.
@Override
public Application beforeApprove(PerunSession session, Application app) throws RegistrarException, PrivilegeException {
List<ApplicationFormItemData> data = registrar.getApplicationDataById(session, app.getId());
if (app.getUser() == null) {
for (ApplicationFormItemData item : data) {
if (item.getFormItem() != null && Objects.equals(AttributesManager.NS_USER_ATTR_DEF + ":birthNumber", item.getFormItem().getPerunDestinationAttribute())) {
// if application contains birth number, try to map to existing user
String rc = item.getValue();
if (rc != null && !rc.isEmpty()) {
try {
User user = ((PerunBl) session.getPerun()).getUsersManagerBl().getUserByExtSourceNameAndExtLogin(session, "RC", rc);
app.setUser(user);
registrar.updateApplicationUser(session, app);
log.debug("Existing user found by RC for {}", app);
} catch (Exception ex) {
log.warn("Couldn't find or set user to application {} by RC: {}", app, ex);
}
// associate existing user with the identity used on registration form
if (app.getUser() != null) {
PerunBl perunBl = (PerunBl) session.getPerun();
ExtSource es = perunBl.getExtSourcesManager().checkOrCreateExtSource(session, app.getExtSourceName(), app.getExtSourceType());
UserExtSource ues = new UserExtSource(es, app.getExtSourceLoa(), app.getCreatedBy());
try {
ues = perunBl.getUsersManagerBl().addUserExtSource(session, app.getUser(), ues);
log.debug("{} associated with {} from application {}", app.getUser(), ues, app);
} catch (UserExtSourceExistsException ex) {
// we can ignore, user will be paired with application
log.warn("{} already had identity associated from application {}", app.getUser(), app);
}
try {
Member member = ((PerunBl) session.getPerun()).getMembersManagerBl().getMemberByUser(session, app.getVo(), app.getUser());
// user is already a member, switch application type
if (Application.AppType.INITIAL.equals(app.getType())) {
app.setType(Application.AppType.EXTENSION);
registrar.updateApplicationType(session, app);
log.debug("Updating application type to EXTENSION since we matched user which is VO member!");
}
} catch (MemberNotExistsException e) {
// OK state
}
}
}
break;
}
}
}
return app;
}
use of cz.metacentrum.perun.core.api.exceptions.UserExtSourceExistsException in project perun by CESNET.
the class DummyPasswordManagerModule method validatePassword.
@Override
public void validatePassword(PerunSession sess, String userLogin, User user) throws InvalidLoginException {
log.debug("validatePassword(userLogin={})", userLogin);
if (user == null) {
user = ((PerunBl) sess.getPerun()).getModulesUtilsBl().getUserByLoginInNamespace(sess, userLogin, "dummy");
}
if (user == null) {
log.warn("No user was found by login '{}' in {} namespace.", userLogin, "dummy");
} else {
// set extSources and extSource related attributes
ExtSource extSource;
try {
extSource = ((PerunBl) sess.getPerun()).getExtSourcesManagerBl().getExtSourceByName(sess, "https://dummy");
} catch (ExtSourceNotExistsException e) {
extSource = new ExtSource("https://dummy", ExtSourcesManager.EXTSOURCE_IDP);
try {
extSource = ((PerunBl) sess.getPerun()).getExtSourcesManagerBl().createExtSource(sess, extSource, null);
} catch (ExtSourceExistsException e1) {
log.warn("impossible or race condition", e1);
}
}
UserExtSource ues = new UserExtSource(extSource, userLogin + "@dummy");
ues.setLoa(2);
try {
((PerunBl) sess.getPerun()).getUsersManagerBl().addUserExtSource(sess, user, ues);
} catch (UserExtSourceExistsException ex) {
// this is OK
}
}
}
use of cz.metacentrum.perun.core.api.exceptions.UserExtSourceExistsException in project perun by CESNET.
the class EinfraPasswordManagerModule method validatePassword.
@Override
public void validatePassword(PerunSession sess, String userLogin, User user) throws InvalidLoginException {
if (user == null) {
user = ((PerunBl) sess.getPerun()).getModulesUtilsBl().getUserByLoginInNamespace(sess, userLogin, actualLoginNamespace);
}
if (user == null) {
log.warn("No user was found by login '{}' in {} namespace.", userLogin, actualLoginNamespace);
} else {
PerunBl perunBl = ((PerunBl) sess.getPerun());
// FIXME - find out more convenient place and support other namespaces
try {
Attribute attribute = perunBl.getAttributesManagerBl().getAttribute(sess, user, AttributesManager.NS_USER_ATTR_DEF + ":lastPwdChangeTimestamp:einfra");
LocalDateTime now = LocalDateTime.now();
String value = now.format(DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss"));
attribute.setValue(value);
perunBl.getAttributesManagerBl().setAttribute(sess, user, attribute);
} catch (AttributeNotExistsException ignore) {
// not supported by namespace
} catch (Exception ex) {
log.warn("Unable to set last password change timestamp for {} in {}", userLogin, actualLoginNamespace, ex);
}
// set extSources and extSource related attributes
try {
List<String> kerberosLogins = new ArrayList<>();
// Set META and EINFRA userExtSources
ExtSource extSource = perunBl.getExtSourcesManagerBl().getExtSourceByName(sess, "META");
UserExtSource ues = new UserExtSource(extSource, userLogin + "@META");
ues.setLoa(0);
try {
perunBl.getUsersManagerBl().addUserExtSource(sess, user, ues);
} catch (UserExtSourceExistsException ex) {
// this is OK
}
extSource = perunBl.getExtSourcesManagerBl().getExtSourceByName(sess, "EINFRA");
ues = new UserExtSource(extSource, userLogin + "@EINFRA");
ues.setLoa(0);
try {
perunBl.getUsersManagerBl().addUserExtSource(sess, user, ues);
} catch (UserExtSourceExistsException ex) {
// this is OK
}
extSource = perunBl.getExtSourcesManagerBl().getExtSourceByName(sess, "https://login.ics.muni.cz/idp/shibboleth");
ues = new UserExtSource(extSource, userLogin + "@meta.cesnet.cz");
ues.setLoa(0);
try {
perunBl.getUsersManagerBl().addUserExtSource(sess, user, ues);
} catch (UserExtSourceExistsException ex) {
// this is OK
}
// Store E-INFRA IdP UES
extSource = perunBl.getExtSourcesManagerBl().getExtSourceByName(sess, "https://idp.e-infra.cz/idp/");
ues = new UserExtSource(extSource, userLogin + "@idp.e-infra.cz");
ues.setLoa(0);
try {
perunBl.getUsersManagerBl().addUserExtSource(sess, user, ues);
} catch (UserExtSourceExistsException ex) {
// this is OK
}
// Store E-INFRA CERT IdP UES
extSource = perunBl.getExtSourcesManagerBl().getExtSourceByName(sess, "https://idp-cert.e-infra.cz/idp/");
ues = new UserExtSource(extSource, userLogin + "@idp-cert.e-infra.cz");
ues.setLoa(0);
try {
perunBl.getUsersManagerBl().addUserExtSource(sess, user, ues);
} catch (UserExtSourceExistsException ex) {
// this is OK
}
// Store also Kerberos logins
Attribute kerberosLoginsAttr = perunBl.getAttributesManagerBl().getAttribute(sess, user, AttributesManager.NS_USER_ATTR_DEF + ":" + "kerberosLogins");
if (kerberosLoginsAttr != null && kerberosLoginsAttr.getValue() != null) {
kerberosLogins.addAll(kerberosLoginsAttr.valueAsList());
}
boolean someChange = false;
if (!kerberosLogins.contains(userLogin + "@EINFRA")) {
kerberosLogins.add(userLogin + "@EINFRA");
someChange = true;
}
if (!kerberosLogins.contains(userLogin + "@META")) {
kerberosLogins.add(userLogin + "@META");
someChange = true;
}
if (someChange && kerberosLoginsAttr != null) {
kerberosLoginsAttr.setValue(kerberosLogins);
perunBl.getAttributesManagerBl().setAttribute(sess, user, kerberosLoginsAttr);
}
} catch (WrongAttributeAssignmentException | AttributeNotExistsException | ExtSourceNotExistsException | WrongAttributeValueException | WrongReferenceAttributeValueException ex) {
throw new InternalErrorException(ex);
}
}
// validate password
super.validatePassword(sess, userLogin, user);
}
use of cz.metacentrum.perun.core.api.exceptions.UserExtSourceExistsException in project perun by CESNET.
the class IcsmuniczPasswordManagerModule method validatePassword.
@Override
public void validatePassword(PerunSession sess, String userLogin, User user) throws InvalidLoginException {
if (user == null) {
user = ((PerunBl) sess.getPerun()).getModulesUtilsBl().getUserByLoginInNamespace(sess, userLogin, actualLoginNamespace);
}
if (user == null) {
log.warn("No user was found by login '{}' in {} namespace.", userLogin, actualLoginNamespace);
} else {
// set extSources and extSource related attributes
try {
List<String> kerberosLogins = new ArrayList<>();
ExtSource extSource = ((PerunBl) sess.getPerun()).getExtSourcesManagerBl().getExtSourceByName(sess, "ICS.MUNI.CZ");
UserExtSource ues = new UserExtSource(extSource, userLogin + "@ICS.MUNI.CZ");
ues.setLoa(0);
try {
((PerunBl) sess.getPerun()).getUsersManagerBl().addUserExtSource(sess, user, ues);
} catch (UserExtSourceExistsException ex) {
// this is OK
}
// Store also Kerberos logins
Attribute kerberosLoginsAttr = ((PerunBl) sess.getPerun()).getAttributesManagerBl().getAttribute(sess, user, AttributesManager.NS_USER_ATTR_DEF + ":" + "kerberosLogins");
if (kerberosLoginsAttr != null && kerberosLoginsAttr.getValue() != null) {
kerberosLogins.addAll((List<String>) kerberosLoginsAttr.getValue());
}
if (!kerberosLogins.contains(userLogin + "@ICS.MUNI.CZ") && kerberosLoginsAttr != null) {
kerberosLogins.add(userLogin + "@ICS.MUNI.CZ");
kerberosLoginsAttr.setValue(kerberosLogins);
((PerunBl) sess.getPerun()).getAttributesManagerBl().setAttribute(sess, user, kerberosLoginsAttr);
}
} catch (WrongAttributeAssignmentException | AttributeNotExistsException | ExtSourceNotExistsException | WrongAttributeValueException | WrongReferenceAttributeValueException ex) {
throw new InternalErrorException(ex);
}
}
// validate password
super.validatePassword(sess, userLogin, user);
}
Aggregations