IdmSetPropertiesState
This AuthState is a processing AuthState.
This plug-in is used to update/insert pre-configured user attributes and user scope properties after a successful nevisIDM login. The initial values, which are only updated after a verification process, are coming from the database.
Note that the state will not update the data in the session, e.g., ch.adnovum.nevisidm.userDto. To do so, use IdmGetPropertiesState.
Topic | Description |
---|---|
Class | ch.nevis.idm.authstate.IdmSetPropertiesState |
Logging | IdmAuth |
Auditing | None |
Marker | NevisIDM:mutation |
Properties | user.attribute.* (String, -) Define user attributes. The AuthState knows where to take the attribute input from. The following attributes are allowed:loginId, extId, clientExtId, clientName, firstName, name, remarks, sex, gender (has precedence over sex), birthDate, title, telephone, email, telefax, mobile, addressLine1, addressLine2, postalCode, city, country, language, Street, houseNumber, dwellingNumber, postOfficeBoxNumber, postOfficeBoxText, locality |
user.attributes.mandatory (String, -) Comma-separated list of mandatory user attributes to gather. If the input field remains empty, an inputMissing transition will be generated. Only attributes that have been defined explicitly with user.attribute.* can be classified as mandatory. | |
user.attributes.optional (String, -) Comma-separated list of optional user attributes to gather. Only attributes that have been defined explicitly with user.attribute.* can be classified as optional. | |
user.attributes.overwrite (String, -) Comma-separated list of attributes that can be overwritten. If the attribute is listed and has a non-empty default value, it will be overwritten. Only attributes that have been defined explicitly with user.attribute.* can be classified as rewritable. | |
user.property.* (String, -) Define user scope properties. After the prefix, the name of the user scope property should be set. Example: user.property.USER_SCOPE_PROPERTY | |
user.property.mandatory (String, -) Comma-separated list of mandatory user scope properties to gather. If the input field remains empty, inputMissing transition will be generated. Only properties that have been defined explicitly with user.property.* can be classified as mandatory. | |
user.property.optional (String, -) Comma-separated list of optional user scope properties to gather. Only properties that have been defined explicitly with user.property.* can be classified as optional. | |
user.property.overwrite (String, -) Comma-separated list of user scope properties that can be overwritten. If the property is listed and has a non-empty default value, it will be overwritten. Only properties that have been defined explicitly with user.property.* can be classified as rewritable. | |
allowInvalidUserEmails (boolean, false) If this parameter is set to true, the e-mail validation is disabled in the auth state. If you want to disable the e-mail validation globally in nevisIDM, you also have to disable the application.feature.email.validation.enabled parameter in the nevisidm-prod.properties configuration file.We advise against disabling e-mail validation. If you set this parameter to true, you have to ensure valid e-mail addresses by other means. If you do not, follow-up errors like e-mail sending failure may occur. | |
writeEmptyValues (boolean, false) If this parameter is set to "true", it is possible to remove attribute/property values in nevisIDM, i.e., overwrite it with an empty value. This is supported only if the corresponding attribute or property is optional. If this parameter is set to "false", empty values are not propagated to nevisIDM, i.e., the stored value remains unchanged. | |
Methods | process (all events) |
Input | None |
Transitions | ok: Gathered attributes and user scope properties are stored, transition to AuthDone expected. |
inputMissing: If the input field remains empty, inputMissing transition will be generated. | |
inputInvalid: If the input validation fails, inputInvalid transition will be generated. To display localized input validation error message, nevisauth litdict (/var/opt/nevisauth/default/conf/LitDict.properties) has to be extended. Currently, the following message key is generated: errors.invalidParameter) | |
clientNotFound: User uses an unsupported client ID or the "default" client ID (see input above) is not available. | |
Output | None |
Errors | None |
Notes | For the input field GUI elements, use the user.<user_attribute>.label (user.email.label, user.name.label, ...) labels. These are language-dependent labels. |
Example
<AuthState name="TestIdmSetProp"
class="ch.nevis.idm.authstate.IdmSetPropertiesState" >
<ResultCond name="ok" next="IdmPostProcessing"/>
<ResultCond name="inputMissing" next="TestIdmSetProp"/>
<ResultCond name="inputInvalid" next="TestIdmSetProp"/>
<Response value="AUTH_CONTINUE">
<Gui name="AuthStepupDialog" label="login.setuserprop.label">
<GuiElem name="lasterror" type="error"
label="${notes:lasterrorinfo}" value="${notes:lasterror}"/>
<GuiElem name="errordetail" type="info"
label="${notes:lasterrorinfo}"/>
<GuiElem name="email" type="text" label="user.email.label"
optional="false"/>
<GuiElem name="remarks" type="text"
label="user.remarks.label"
optional="false" />
<GuiElem name="addressLine1" type="text"
label="user.addressLine1.label" optional="true"/>
<GuiElem name="postalCode" type="text"
label="user.postalCode.label" optional="true"/>
<GuiElem name="userProperty1" type="text"
label="userProperty1"
optional="false"/>
<GuiElem name="userProperty2" type="text"
label="userProperty2"
optional="true"/>
<GuiElem name="submit" type="button"
label="submit.button.label"
value="continue"/>
</Gui>
</Response>
<property name="user.attributes.overwrite" value="email,remarks"/>
<property name="user.attributes.mandatory"
value="email,addressLine1"/>
<property name="user.attributes.optional"
value="remarks,postalCode"/>
<property name="user.attribute.email" value="${inargs:email}"/>
<property name="user.attribute.remarks" value="${inargs:remarks}"/>
<property name="user.attribute.addressLine1"
value="${inargs:addressLine1}"/>
<property name="user.attribute.postalCode"
value="${inargs:postalCode}"/>
<property name="user.property.overwrite"
value="userProperty1,userProperty2"/>
<property name="user.property.mandatory" value="userProperty1"/>
<property name="user.property.optional" value="userProperty2"/>
<property name="user.property.userProperty1"
value="${inargs:userProperty1}"/>
<property name="user.property.userProperty2"
value="${inargs:userProperty2}"/>
</AuthState>