feature/Always create a new term and conditions, never update existing one

This commit is contained in:
Marko Milić 2024-09-10 13:39:01 +02:00
parent 0883fabc61
commit 1d098394ee
8 changed files with 16 additions and 43 deletions

View File

@ -852,7 +852,7 @@ object NewStyle extends MdcLoggable{
}
}
def getAgreementByUserId(userId: String, agreementType: String, callContext: Option[CallContext]): Future[Box[UserAgreement]] = {
Future(UserAgreementProvider.userAgreementProvider.vend.getUserAgreement(userId, agreementType))
Future(UserAgreementProvider.userAgreementProvider.vend.getLastUserAgreement(userId, agreementType))
}
def getEntitlementsByBankId(bankId: String, callContext: Option[CallContext]): Future[List[Entitlement]] = {

View File

@ -686,9 +686,9 @@ import net.liftweb.util.Helpers._
val privacyPolicyValue: String = getWebUiPropsValue("webui_privacy_policy", "")
val termsAndConditionsValue: String = getWebUiPropsValue("webui_terms_and_conditions", "")
// User Agreement table
UserAgreementProvider.userAgreementProvider.vend.createOrUpdateUserAgreement(
UserAgreementProvider.userAgreementProvider.vend.createUserAgreement(
theUser.user.foreign.map(_.userId).getOrElse(""), "privacy_conditions", privacyPolicyValue)
UserAgreementProvider.userAgreementProvider.vend.createOrUpdateUserAgreement(
UserAgreementProvider.userAgreementProvider.vend.createUserAgreement(
theUser.user.foreign.map(_.userId).getOrElse(""), "terms_and_conditions", termsAndConditionsValue)
if (!skipEmailValidation) {
sendValidationEmail(theUser)
@ -1041,13 +1041,13 @@ def restoreSomeSessions(): Unit = {
def redirectUri(user: Box[ResourceUser]): String = {
val userId = user.map(_.userId).getOrElse("")
val hashedAgreementTextOfUser =
UserAgreementProvider.userAgreementProvider.vend.getUserAgreement(userId, "terms_and_conditions")
UserAgreementProvider.userAgreementProvider.vend.getLastUserAgreement(userId, "terms_and_conditions")
.map(_.agreementHash).getOrElse(HashUtil.Sha256Hash("not set"))
val agreementText = getWebUiPropsValue("webui_terms_and_conditions", "not set")
val hashedAgreementText = HashUtil.Sha256Hash(agreementText)
if(hashedAgreementTextOfUser == hashedAgreementText) { // Check terms and conditions
val hashedAgreementTextOfUser =
UserAgreementProvider.userAgreementProvider.vend.getUserAgreement(userId, "privacy_conditions")
UserAgreementProvider.userAgreementProvider.vend.getLastUserAgreement(userId, "privacy_conditions")
.map(_.agreementHash).getOrElse(HashUtil.Sha256Hash("not set"))
val agreementText = getWebUiPropsValue("webui_privacy_policy", "not set")
val hashedAgreementText = HashUtil.Sha256Hash(agreementText)

View File

@ -68,7 +68,7 @@ class PrivacyPolicy extends MdcLoggable {
private def updateUserAgreement() = {
if(AuthUser.currentUser.isDefined) {
val agreementText = getWebUiPropsValue("webui_privacy_policy", "not set")
UserAgreementProvider.userAgreementProvider.vend.createOrUpdateUserAgreement(
UserAgreementProvider.userAgreementProvider.vend.createUserAgreement(
AuthUser.currentUser.flatMap(_.user.foreign.map(_.userId)).getOrElse(""), "privacy_conditions", agreementText)
S.redirectTo("/")
}

View File

@ -69,7 +69,7 @@ class TermsAndConditions extends MdcLoggable {
if(AuthUser.currentUser.isDefined) {
val agreementText = getWebUiPropsValue("webui_terms_and_conditions", "not set")
// val hashedAgreementText = HashUtil.Sha256Hash(agreementText)
UserAgreementProvider.userAgreementProvider.vend.createOrUpdateUserAgreement(
UserAgreementProvider.userAgreementProvider.vend.createUserAgreement(
AuthUser.currentUser.flatMap(_.user.foreign.map(_.userId)).getOrElse(""),
"terms_and_conditions",
agreementText)

View File

@ -121,13 +121,13 @@ class UserInvitation extends MdcLoggable {
showError(msg)
case _ =>
// User Agreement table
UserAgreementProvider.userAgreementProvider.vend.createOrUpdateUserAgreement(
UserAgreementProvider.userAgreementProvider.vend.createUserAgreement(
u.userId, "privacy_conditions", privacyConditionsValue)
UserAgreementProvider.userAgreementProvider.vend.createOrUpdateUserAgreement(
UserAgreementProvider.userAgreementProvider.vend.createUserAgreement(
u.userId, "terms_and_conditions", termsAndConditionsValue)
UserAgreementProvider.userAgreementProvider.vend.createOrUpdateUserAgreement(
UserAgreementProvider.userAgreementProvider.vend.createUserAgreement(
u.userId, "accept_marketing_info", marketingInfoCheckboxVar.is.toString)
UserAgreementProvider.userAgreementProvider.vend.createOrUpdateUserAgreement(
UserAgreementProvider.userAgreementProvider.vend.createUserAgreement(
u.userId, "consent_for_collecting_personal_data", consentForCollectingCheckboxVar.is.toString)
// Set the status of the user invitation to "FINISHED"
UserInvitationProvider.userInvitationProvider.vend.updateStatusOfUserInvitation(userInvitation.map(_.userInvitationId).getOrElse(""), "FINISHED")

View File

@ -133,9 +133,9 @@ object LiftUsers extends Users with MdcLoggable{
}
private def getUserAgreements(user: ResourceUser) = {
val acceptMarketingInfo = UserAgreementProvider.userAgreementProvider.vend.getUserAgreement(user.userId, "accept_marketing_info")
val termsAndConditions = UserAgreementProvider.userAgreementProvider.vend.getUserAgreement(user.userId, "terms_and_conditions")
val privacyConditions = UserAgreementProvider.userAgreementProvider.vend.getUserAgreement(user.userId, "privacy_conditions")
val acceptMarketingInfo = UserAgreementProvider.userAgreementProvider.vend.getLastUserAgreement(user.userId, "accept_marketing_info")
val termsAndConditions = UserAgreementProvider.userAgreementProvider.vend.getLastUserAgreement(user.userId, "terms_and_conditions")
val privacyConditions = UserAgreementProvider.userAgreementProvider.vend.getLastUserAgreement(user.userId, "privacy_conditions")
val agreements = acceptMarketingInfo.toList ::: termsAndConditions.toList ::: privacyConditions.toList
agreements
}

View File

@ -10,32 +10,6 @@ import net.liftweb.mapper._
import net.liftweb.common.Box.tryo
object MappedUserAgreementProvider extends UserAgreementProvider {
// TODO Change the function name
override def createOrUpdateUserAgreement(userId: String, agreementType: String, agreementText: String): Box[UserAgreement] = {
UserAgreement.find(
By(UserAgreement.UserId, userId),
By(UserAgreement.AgreementType, agreementType)
) match {
// TODO We should be adding an additional record. Not changing existing one.
case Full(existingUser) =>
Full(
existingUser
.AgreementType(agreementType)
.AgreementText(agreementText)
.saveMe()
)
case Empty =>
Full(
UserAgreement.create
.UserId(userId)
.AgreementType(agreementType)
.AgreementText(agreementText)
.Date(new Date)
.saveMe()
)
case everythingElse => everythingElse
}
}
override def createUserAgreement(userId: String, agreementType: String, agreementText: String): Box[UserAgreement] = {
Full(
UserAgreement.create
@ -46,7 +20,7 @@ object MappedUserAgreementProvider extends UserAgreementProvider {
.saveMe()
)
}
override def getUserAgreement(userId: String, agreementType: String): Box[UserAgreement] = {
override def getLastUserAgreement(userId: String, agreementType: String): Box[UserAgreement] = {
UserAgreement.findAll(
By(UserAgreement.UserId, userId),
By(UserAgreement.AgreementType, agreementType)

View File

@ -16,9 +16,8 @@ object UserAgreementProvider extends SimpleInjector {
}
trait UserAgreementProvider {
def createOrUpdateUserAgreement(userId: String, agreementType: String, agreementText: String): Box[UserAgreement]
def createUserAgreement(userId: String, agreementType: String, agreementText: String): Box[UserAgreement]
def getUserAgreement(userId: String, agreementType: String): Box[UserAgreement]
def getLastUserAgreement(userId: String, agreementType: String): Box[UserAgreement]
}
trait UserAgreementTrait {