registration screen optimized, see #58

This commit is contained in:
Jottyfan 2023-09-21 19:54:23 +02:00
parent f31c433c80
commit 497a4dfcf9
4 changed files with 21 additions and 5 deletions

View File

@ -8,7 +8,7 @@ plugins {
} }
group = 'de.jottyfan.camporganizer' group = 'de.jottyfan.camporganizer'
version = '0.5.5' version = '0.5.6'
description = """CampOrganizer2""" description = """CampOrganizer2"""

View File

@ -34,7 +34,7 @@ public class SecurityConfiguration {
// @formatter:off // @formatter:off
.oauth2Login(o -> o.defaultSuccessUrl("/")) .oauth2Login(o -> o.defaultSuccessUrl("/"))
.logout(o -> o.logoutSuccessHandler(new OidcClientInitiatedLogoutSuccessHandler(crr))) .logout(o -> o.logoutSuccessHandler(new OidcClientInitiatedLogoutSuccessHandler(crr)))
.authorizeHttpRequests(o -> o.requestMatchers("/dashboard/**", "/business/**", "/confirmation/**").authenticated() .authorizeHttpRequests(o -> o.requestMatchers("/dashboard/**", "/business/**", "/confirmation/**", "/userlogin/**").authenticated()
.anyRequest().permitAll()) .anyRequest().permitAll())
.oauth2ResourceServer(o -> o.jwt(Customizer.withDefaults())) .oauth2ResourceServer(o -> o.jwt(Customizer.withDefaults()))
.sessionManagement(o -> o.init(sec)); .sessionManagement(o -> o.init(sec));

View File

@ -44,6 +44,18 @@ public class RegistrationController extends CommonController {
} }
} }
/**
* userlogin is protected and leads the request to the keycloak login mask if not yet logged in
*
* @param fkCamp the ID of the camp
* @param model the model
* @return hen registration page
*/
@GetMapping("/userlogin/registration/{fkCamp}")
public String loginIndex(@PathVariable(name = "fkCamp", required = true) Integer fkCamp, Model model) {
return index(fkCamp, model);
}
@PostMapping("/registration/register") @PostMapping("/registration/register")
public String register(@Valid @ModelAttribute("bean") RegistrationBean bean, final BindingResult bindingResult, public String register(@Valid @ModelAttribute("bean") RegistrationBean bean, final BindingResult bindingResult,
Model model) { Model model) {

View File

@ -11,6 +11,7 @@
<h3 class="centered cabin" th:text="'zur ' + ${camp.name} + ' ' + ${camp.year}"></h3> <h3 class="centered cabin" th:text="'zur ' + ${camp.name} + ' ' + ${camp.year}"></h3>
<div class="card centered-card lindaborders" style="max-width: 48rem"> <div class="card centered-card lindaborders" style="max-width: 48rem">
<div class="card-body"> <div class="card-body">
<h1 class="centered cabin">Teilnehmeranmeldung</h1>
<form th:action="@{/registration/register}" th:object="${bean}" method="post"> <form th:action="@{/registration/register}" th:object="${bean}" method="post">
<span class="error" th:each="error : ${#fields.errors('fkCamp')}">[[${error}]]</span> <span class="error" th:each="error : ${#fields.errors('fkCamp')}">[[${error}]]</span>
<input type="hidden" th:field="*{fkCamp}" /> <input type="hidden" th:field="*{fkCamp}" />
@ -77,14 +78,17 @@
</div> </div>
</div> </div>
<div class="row" th:if="${#strings.isEmpty(currentUser)}"> <div class="row" th:if="${#strings.isEmpty(currentUser)}">
<div class="col-sm-12 rowdist"> <div class="col-sm-6 rowdist">
<div class="form-check" title="Die Anmeldedaten können in den Kontoeinstellungen bearbeitet und für die nächsten Freizeitanmeldungen verwendet werden."> <div class="form-check" title="Die Anmeldedaten können in den Kontoeinstellungen bearbeitet und für die nächsten Freizeitanmeldungen verwendet werden.">
<input id="save" type="checkbox" class="form-check-input" th:field="*{registerInKeycloak}" onchange="$('#createlogin').toggle();" /> <label class="form-check-label" for="save">Anmeldedaten <input id="save" type="checkbox" class="form-check-input" th:field="*{registerInKeycloak}" onchange="$('#createlogin').toggle();" /> <label class="form-check-label" for="save">Registrieren</label>
speichern</label>
</div> </div>
</div> </div>
<div class="col-sm-6 rowdist">
<a th:href="@{/userlogin/registration/{id}(id=${bean.fkCamp})}">oder einloggen</a>
</div>
</div> </div>
<div id="createlogin" class="row" th:if="${#strings.isEmpty(currentUser)}"> <div id="createlogin" class="row" th:if="${#strings.isEmpty(currentUser)}">
<h1 class="centered cabin">Profildaten anlegen</h1>
<div class="col-sm-6 rowdist"> <div class="col-sm-6 rowdist">
<div>Nutzername</div> <div>Nutzername</div>
<input type="text" th:field="*{login}" th:class="${'form-control ' + (#fields.hasErrors('login') ? 'inputerror' : '')}" /> <input type="text" th:field="*{login}" th:class="${'form-control ' + (#fields.hasErrors('login') ? 'inputerror' : '')}" />