mirror of
https://github.com/OpenBankProject/OBP-API.git
synced 2026-02-06 15:27:01 +00:00
refactor/enhanced the 'Create User Invitation' endpoint
This commit is contained in:
parent
15165925d2
commit
346dada0f0
@ -1981,18 +1981,18 @@ object SwaggerDefinitionsJSON {
|
||||
first_name = ExampleValue.firstNameExample.value,
|
||||
last_name = ExampleValue.lastNameExample.value,
|
||||
email = ExampleValue.emailExample.value,
|
||||
company = "Tesobe",
|
||||
country = "Germany",
|
||||
purpose = "Developer"
|
||||
company = ExampleValue.companyExample.value,
|
||||
country = ExampleValue.countryExample.value,
|
||||
purpose = ExampleValue.purposeExample.value,
|
||||
)
|
||||
val userInvitationJsonV400 = UserInvitationJsonV400(
|
||||
first_name = ExampleValue.firstNameExample.value,
|
||||
last_name = ExampleValue.lastNameExample.value,
|
||||
email = ExampleValue.emailExample.value,
|
||||
company = "TESOBE",
|
||||
country = "Germany",
|
||||
purpose = "Developer",
|
||||
status = "CREATED"
|
||||
company = ExampleValue.companyExample.value,
|
||||
country = ExampleValue.countryExample.value,
|
||||
purpose = ExampleValue.purposeExample.value,
|
||||
status = ExampleValue.statusExample.value,
|
||||
)
|
||||
|
||||
val entitlementRequestJSON =
|
||||
|
||||
@ -1,14 +1,14 @@
|
||||
package code.api.util
|
||||
|
||||
|
||||
import code.api.util.APIUtil.{DateWithMs, DateWithMsExampleString, oneYearAgoDate, formatDate, oneYearAgo, parseDate}
|
||||
import code.api.util.APIUtil.{DateWithMs, DateWithMsExampleString, formatDate, oneYearAgo, oneYearAgoDate, parseDate}
|
||||
import code.api.util.ErrorMessages.{InvalidJsonFormat, UnknownError, UserHasMissingRoles, UserNotLoggedIn}
|
||||
import net.liftweb.json.JsonDSL._
|
||||
import code.api.util.Glossary.{glossaryItems, makeGlossaryItem}
|
||||
import code.apicollection.ApiCollection
|
||||
import code.dynamicEntity.{DynamicEntityDefinition, DynamicEntityFooBar, DynamicEntityFullBarFields, DynamicEntityIntTypeExample, DynamicEntityStringTypeExample}
|
||||
import com.openbankproject.commons.model.CardAction
|
||||
import com.openbankproject.commons.model.enums.{CustomerAttributeType, DynamicEntityFieldType}
|
||||
import com.openbankproject.commons.model.enums.{CustomerAttributeType, DynamicEntityFieldType, UserInvitationPurpose}
|
||||
import com.openbankproject.commons.util.ReflectUtils
|
||||
import net.liftweb.json
|
||||
import net.liftweb.json.JObject
|
||||
@ -1759,6 +1759,15 @@ object ExampleValue {
|
||||
|
||||
lazy val lastNameExample = ConnectorField("Smith","The Last name")
|
||||
glossaryItems += makeGlossaryItem("last_name", lastNameExample)
|
||||
|
||||
lazy val companyExample = ConnectorField("Tesobe GmbH","The company name")
|
||||
glossaryItems += makeGlossaryItem("company", companyExample)
|
||||
|
||||
lazy val countryExample = ConnectorField("Germany"," The country name")
|
||||
glossaryItems += makeGlossaryItem("country", countryExample)
|
||||
|
||||
lazy val purposeExample = ConnectorField(UserInvitationPurpose.DEVELOPER.toString, NoDescriptionProvided)
|
||||
glossaryItems += makeGlossaryItem("purpose", purposeExample)
|
||||
|
||||
lazy val redirectUrlExample = ConnectorField(NoExampleProvided,NoDescriptionProvided)
|
||||
glossaryItems += makeGlossaryItem("redirect_url", redirectUrlExample)
|
||||
|
||||
@ -3756,7 +3756,25 @@ trait APIMethods400 {
|
||||
"/banks/BANK_ID/user-invitation",
|
||||
"Create User Invitation",
|
||||
s"""Create User Invitation.
|
||||
|
|
||||
|
|
||||
| This endpoint will send an invitation email to the developers, then they can use the link to create the obp user.
|
||||
|
|
||||
| purpose filed only support:${UserInvitationPurpose.values.toString()}.
|
||||
|
|
||||
| You can customise the email details use the following webui props:
|
||||
|
|
||||
| when purpose == ${UserInvitationPurpose.DEVELOPER.toString}
|
||||
| webui_developer_user_invitation_email_subject
|
||||
| webui_developer_user_invitation_email_from
|
||||
| webui_developer_user_invitation_email_text
|
||||
| webui_developer_user_invitation_email_html_text
|
||||
|
|
||||
| when purpose = == ${UserInvitationPurpose.CUSTOMER.toString}
|
||||
| webui_customer_user_invitation_email_subject
|
||||
| webui_customer_user_invitation_email_from
|
||||
| webui_customer_user_invitation_email_text
|
||||
| webui_customer_user_invitation_email_html_text
|
||||
|
|
||||
|""",
|
||||
userInvitationPostJsonV400,
|
||||
userInvitationJsonV400,
|
||||
@ -3778,6 +3796,11 @@ trait APIMethods400 {
|
||||
postedData <- NewStyle.function.tryons(failMsg, 400, cc.callContext) {
|
||||
json.extract[PostUserInvitationJsonV400]
|
||||
}
|
||||
|
||||
_ <- NewStyle.function.tryons(s"$InvalidJsonValue postedData.purpose only support ${UserInvitationPurpose.values.toString()}", 400, cc.callContext) {
|
||||
UserInvitationPurpose.withName(postedData.purpose)
|
||||
}
|
||||
|
||||
(invitation, callContext) <- NewStyle.function.createUserInvitation(
|
||||
bankId,
|
||||
postedData.first_name,
|
||||
@ -3788,14 +3811,24 @@ trait APIMethods400 {
|
||||
postedData.purpose,
|
||||
cc.callContext)
|
||||
} yield {
|
||||
val subject = getWebUiPropsValue("webui_developer_user_invitation_email_subject", "Welcome to the API Playground")
|
||||
val from = getWebUiPropsValue("webui_developer_user_invitation_email_from", "do-not-reply@openbankproject.com")
|
||||
val link = s"${APIUtil.getPropsValue("portal_hostname",Constant.HostName)}/user-invitation?id=${invitation.secretKey}"
|
||||
val customText = getWebUiPropsValue("webui_developer_user_invitation_email_text", WebUITemplate.webUiDeveloperUserInvitationEmailText)
|
||||
val customHtmlText = getWebUiPropsValue("webui_developer_user_invitation_email_html_text", WebUITemplate.webUiDeveloperUserInvitationEmailHtmlText)
|
||||
.replace(WebUIPlaceholder.emailRecipient, invitation.firstName)
|
||||
.replace(WebUIPlaceholder.activateYourAccount, link)
|
||||
Mailer.sendMail(From(from), Subject(subject), To(invitation.email), PlainMailBodyType(customText), XHTMLMailBodyType(XML.loadString(customHtmlText)))
|
||||
val link = s"${APIUtil.getPropsValue("portal_hostname", Constant.HostName)}/user-invitation?id=${invitation.secretKey}"
|
||||
if (postedData.purpose == UserInvitationPurpose.DEVELOPER.toString){
|
||||
val subject = getWebUiPropsValue("webui_developer_user_invitation_email_subject", "Welcome to the API Playground")
|
||||
val from = getWebUiPropsValue("webui_developer_user_invitation_email_from", "do-not-reply@openbankproject.com")
|
||||
val customText = getWebUiPropsValue("webui_developer_user_invitation_email_text", WebUITemplate.webUiDeveloperUserInvitationEmailText)
|
||||
val customHtmlText = getWebUiPropsValue("webui_developer_user_invitation_email_html_text", WebUITemplate.webUiDeveloperUserInvitationEmailHtmlText)
|
||||
.replace(WebUIPlaceholder.emailRecipient, invitation.firstName)
|
||||
.replace(WebUIPlaceholder.activateYourAccount, link)
|
||||
Mailer.sendMail(From(from), Subject(subject), To(invitation.email), PlainMailBodyType(customText), XHTMLMailBodyType(XML.loadString(customHtmlText)))
|
||||
} else {
|
||||
val subject = getWebUiPropsValue("webui_customer_user_invitation_email_subject", "Welcome to the API Playground")
|
||||
val from = getWebUiPropsValue("webui_customer_user_invitation_email_from", "do-not-reply@openbankproject.com")
|
||||
val customText = getWebUiPropsValue("webui_customer_user_invitation_email_text", WebUITemplate.webUiDeveloperUserInvitationEmailText)
|
||||
val customHtmlText = getWebUiPropsValue("webui_customer_user_invitation_email_html_text", WebUITemplate.webUiDeveloperUserInvitationEmailHtmlText)
|
||||
.replace(WebUIPlaceholder.emailRecipient, invitation.firstName)
|
||||
.replace(WebUIPlaceholder.activateYourAccount, link)
|
||||
Mailer.sendMail(From(from), Subject(subject), To(invitation.email), PlainMailBodyType(customText), XHTMLMailBodyType(XML.loadString(customHtmlText)))
|
||||
}
|
||||
(JSONFactory400.createUserInvitationJson(invitation), HttpCode.`201`(callContext))
|
||||
}
|
||||
}
|
||||
|
||||
@ -136,6 +136,12 @@ object PemCertificateRole extends OBPEnumeration[PemCertificateRole] {
|
||||
object PSP_AI extends Value
|
||||
object PSP_PI extends Value
|
||||
}
|
||||
|
||||
sealed trait UserInvitationPurpose extends EnumValue
|
||||
object UserInvitationPurpose extends OBPEnumeration[UserInvitationPurpose] {
|
||||
object DEVELOPER extends Value
|
||||
object CUSTOMER extends Value
|
||||
}
|
||||
//------api enumerations end ----
|
||||
|
||||
sealed trait DynamicEntityFieldType extends EnumValue {
|
||||
|
||||
Loading…
Reference in New Issue
Block a user