api: Show privacy policy checkbox in registration, if a URL is provided

This commit is contained in:
Paul Bienkowski 2021-05-15 14:03:44 +02:00
parent 1dce9aba60
commit 3bb87989b2
5 changed files with 28 additions and 2 deletions

View file

@ -25,5 +25,7 @@
"refreshTokenExpirySeconds": 86400000, "refreshTokenExpirySeconds": 86400000,
"title": "OpenBikeSensor" "title": "OpenBikeSensor"
} }
] ],
"imprintUrl": "https://example.com/imprint",
"privacyPolicyUrl": "https://example.com/privacy"
} }

View file

@ -32,5 +32,7 @@
"refreshTokenExpirySeconds": 86400000, "refreshTokenExpirySeconds": 86400000,
"title": "OpenBikeSensor" "title": "OpenBikeSensor"
} }
] ],
"imprintUrl": "https://example.com/imprint",
"privacyPolicyUrl": "https://example.com/privacy"
} }

View file

@ -5,6 +5,9 @@ const configSchema = Joi.object({
jwtSecret: Joi.string().min(16).max(128).required(), jwtSecret: Joi.string().min(16).max(128).required(),
cookieSecret: Joi.string().min(16).max(128).required(), cookieSecret: Joi.string().min(16).max(128).required(),
imprintUrl: Joi.string(),
privacyPolicyUrl: Joi.string(),
baseUrl: Joi.string().required(), baseUrl: Joi.string().required(),
mainFrontendUrl: Joi.string(), // optional mainFrontendUrl: Joi.string(), // optional

View file

@ -52,6 +52,8 @@ function isValidScope(scope) {
router.use((req, res, next) => { router.use((req, res, next) => {
res.locals.user = req.user; res.locals.user = req.user;
res.locals.mainFrontendUrl = config.mainFrontendUrl; res.locals.mainFrontendUrl = config.mainFrontendUrl;
res.locals.imprintUrl = config.imprintUrl;
res.locals.privacyPolicyUrl = config.privacyPolicyUrl;
res.locals.baseUrl = baseUrl + '/'; res.locals.baseUrl = baseUrl + '/';
next(); next();
}); });
@ -463,6 +465,10 @@ router
email: Joi.string().email().required(), email: Joi.string().email().required(),
password: Joi.string().min(6).required(), password: Joi.string().min(6).required(),
confirmPassword: Joi.string().valid(Joi.ref('password')).required(), confirmPassword: Joi.string().valid(Joi.ref('password')).required(),
...(config.privacyPolicyUrl ? {
acceptPrivacyPolicy: Joi.boolean().truthy().required(),
} : {}),
}), }),
), ),
wrapRoute(async (req, res) => { wrapRoute(async (req, res) => {

View file

@ -22,4 +22,17 @@ block content
label(for="confirmPassword") Confirm Password label(for="confirmPassword") Confirm Password
input(id="confirmPassword", name="confirmPassword", type="password") input(id="confirmPassword", name="confirmPassword", type="password")
if privacyPolicyUrl
.field
label Privacy policy
.ui.checkbox
input(id="acceptPrivacyPolicy", name="acceptPrivacyPolicy", type="checkbox", value="true")
label(for="acceptPrivacyPolicy")
| I have read and understood the
|
a(href=privacyPolicyUrl, target="_blank", rel="noreferrer") privacy policy
|
| and consent to the use of my data as described therein.
button.ui.button.primary(type="submit") Register button.ui.button.primary(type="submit") Register