diff --git a/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala b/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala index 945d4c5bd..0e60d82ef 100644 --- a/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala +++ b/obp-api/src/main/scala/code/api/ResourceDocs1_4_0/SwaggerDefinitionsJSON.scala @@ -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 = diff --git a/obp-api/src/main/scala/code/api/util/ExampleValue.scala b/obp-api/src/main/scala/code/api/util/ExampleValue.scala index 44c37aad7..519718ac7 100644 --- a/obp-api/src/main/scala/code/api/util/ExampleValue.scala +++ b/obp-api/src/main/scala/code/api/util/ExampleValue.scala @@ -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) diff --git a/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala b/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala index d71c61cda..f47bcdd80 100644 --- a/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala +++ b/obp-api/src/main/scala/code/api/v4_0_0/APIMethods400.scala @@ -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)) } } diff --git a/obp-commons/src/main/scala/com/openbankproject/commons/model/enums/Enumerations.scala b/obp-commons/src/main/scala/com/openbankproject/commons/model/enums/Enumerations.scala index 28ff90cc5..73e9251e7 100644 --- a/obp-commons/src/main/scala/com/openbankproject/commons/model/enums/Enumerations.scala +++ b/obp-commons/src/main/scala/com/openbankproject/commons/model/enums/Enumerations.scala @@ -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 {