see #48
This commit is contained in:
parent
5b861f730f
commit
89cfbc6741
@ -18,7 +18,7 @@ apply plugin: 'war'
|
|||||||
apply plugin: 'application'
|
apply plugin: 'application'
|
||||||
|
|
||||||
group = 'de.jottyfan.camporganizer'
|
group = 'de.jottyfan.camporganizer'
|
||||||
version = '0.5.1'
|
version = '0.5.2'
|
||||||
sourceCompatibility = 17
|
sourceCompatibility = 17
|
||||||
mainClassName = "de.jottyfan.camporganizer.Main"
|
mainClassName = "de.jottyfan.camporganizer.Main"
|
||||||
|
|
||||||
|
@ -21,6 +21,7 @@ import de.jottyfan.camporganizer.module.registration.validate.UnusedUsername;
|
|||||||
*/
|
*/
|
||||||
@UnusedUsername(field = "login", message = "Dieses Login ist leider bereits vergeben. Bitte wähle ein anderes.")
|
@UnusedUsername(field = "login", message = "Dieses Login ist leider bereits vergeben. Bitte wähle ein anderes.")
|
||||||
@TeacherAgeCheck(field = "birthDate", fkCamp = "fkCamp", campRole = "campRole", message = "Als Mitarbeiter bist Du leider zu jung für diese Freizeit.")
|
@TeacherAgeCheck(field = "birthDate", fkCamp = "fkCamp", campRole = "campRole", message = "Als Mitarbeiter bist Du leider zu jung für diese Freizeit.")
|
||||||
|
// TODO: registration completeness annotation; in case of registerInKeycloak == true, force login, password, kcForename, kcSurname and kcEmail not to be blank
|
||||||
public class RegistrationBean implements Serializable {
|
public class RegistrationBean implements Serializable {
|
||||||
private static final long serialVersionUID = 1L;
|
private static final long serialVersionUID = 1L;
|
||||||
|
|
||||||
@ -50,6 +51,9 @@ public class RegistrationBean implements Serializable {
|
|||||||
private Boolean registerInKeycloak;
|
private Boolean registerInKeycloak;
|
||||||
private String login;
|
private String login;
|
||||||
private String password;
|
private String password;
|
||||||
|
private String kcForename;
|
||||||
|
private String kcSurname;
|
||||||
|
private String kcEmail;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* @return forename + surname, separated by a space
|
* @return forename + surname, separated by a space
|
||||||
@ -267,4 +271,46 @@ public class RegistrationBean implements Serializable {
|
|||||||
public void setCampRole(EnumCamprole campRole) {
|
public void setCampRole(EnumCamprole campRole) {
|
||||||
this.campRole = campRole;
|
this.campRole = campRole;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the kcForename
|
||||||
|
*/
|
||||||
|
public String getKcForename() {
|
||||||
|
return kcForename;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param kcForename the kcForename to set
|
||||||
|
*/
|
||||||
|
public void setKcForename(String kcForename) {
|
||||||
|
this.kcForename = kcForename;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the kcSurname
|
||||||
|
*/
|
||||||
|
public String getKcSurname() {
|
||||||
|
return kcSurname;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param kcSurname the kcSurname to set
|
||||||
|
*/
|
||||||
|
public void setKcSurname(String kcSurname) {
|
||||||
|
this.kcSurname = kcSurname;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return the kcEmail
|
||||||
|
*/
|
||||||
|
public String getKcEmail() {
|
||||||
|
return kcEmail;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @param kcEmail the kcEmail to set
|
||||||
|
*/
|
||||||
|
public void setKcEmail(String kcEmail) {
|
||||||
|
this.kcEmail = kcEmail;
|
||||||
|
}
|
||||||
}
|
}
|
||||||
|
@ -52,7 +52,7 @@ public class RegistrationService {
|
|||||||
}
|
}
|
||||||
Boolean result = gateway.register(bean);
|
Boolean result = gateway.register(bean);
|
||||||
if (result && bean.getRegisterInKeycloak()) {
|
if (result && bean.getRegisterInKeycloak()) {
|
||||||
keycloak.register(bean.getForename(), bean.getSurname(), bean.getLogin(), bean.getPassword(), bean.getEmail());
|
keycloak.register(bean.getKcForename(), bean.getKcSurname(), bean.getLogin(), bean.getPassword(), bean.getKcEmail());
|
||||||
}
|
}
|
||||||
return result;
|
return result;
|
||||||
}
|
}
|
||||||
|
@ -12,70 +12,68 @@
|
|||||||
<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">
|
||||||
<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}]]<br /></span>
|
<span class="error" th:each="error : ${#fields.errors('fkCamp')}">[[${error}]]</span>
|
||||||
<input type="hidden" th:field="*{fkCamp}" />
|
<input type="hidden" th:field="*{fkCamp}" />
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="row">
|
<div class="row">
|
||||||
<div class="col-sm-6 rowdist">
|
<div class="col-sm-6 rowdist">
|
||||||
<span class="error" th:each="error : ${#fields.errors('forename')}">[[${error}]]<br /></span>
|
<div>Vorname</div>
|
||||||
<input type="text" placeholder="Vorname" th:field="*{forename}" th:class="${'form-control ' + (#fields.hasErrors('forename') ? 'inputerror' : '')}" />
|
<input type="text" th:field="*{forename}" th:class="${'form-control ' + (#fields.hasErrors('forename') ? 'inputerror' : '')}" />
|
||||||
|
<span class="error" th:each="error : ${#fields.errors('forename')}">[[${error}]]</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 rowdist">
|
<div class="col-sm-6 rowdist">
|
||||||
<span class="error" th:each="error : ${#fields.errors('surname')}">[[${error}]]<br /></span>
|
<div>Nachname</div>
|
||||||
<input type="text" placeholder="Nachname" th:field="*{surname}" th:class="${'form-control ' + (#fields.hasErrors('surname') ? 'inputerror' : '')}" />
|
<input type="text" th:field="*{surname}" th:class="${'form-control ' + (#fields.hasErrors('surname') ? 'inputerror' : '')}" />
|
||||||
</div>
|
<span class="error" th:each="error : ${#fields.errors('surname')}">[[${error}]]</span>
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-6 rowdist">
|
|
||||||
<span class="error" th:each="error : ${#fields.errors('sex')}">[[${error}]]<br /></span>
|
|
||||||
<select th:field="*{sex}" th:class="${'form-select ' + (#fields.hasErrors('sex') ? 'inputerror' : '')}">
|
|
||||||
<option value="">Geschlecht</option>
|
|
||||||
<option th:each="o : ${sexes}" th:value="${o.key}" th:text="${o.value}"></option>
|
|
||||||
</select>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 rowdist">
|
<div class="col-sm-6 rowdist">
|
||||||
<span class="error" th:each="error : ${#fields.errors('birthDate')}">[[${error}]]<br /></span>
|
<div>Straße und Hausnummer</div>
|
||||||
<input type="date" placeholder="Geburtsdatum" th:field="*{birthDate}" th:class="${'form-control ' + (#fields.hasErrors('birthDate') ? 'inputerror' : '')}" onfocus="this.type = 'date'" onblur="this.type = 'text'" />
|
<input type="text" th:field="*{street}" th:class="${'form-control ' + (#fields.hasErrors('street') ? 'inputerror' : '')}" />
|
||||||
</div>
|
<span class="error" th:each="error : ${#fields.errors('street')}">[[${error}]]</span>
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-6 rowdist">
|
|
||||||
<span class="error" th:each="error : ${#fields.errors('street')}">[[${error}]]<br /></span>
|
|
||||||
<input type="text" placeholder="Straße und Hausnummer" th:field="*{street}" th:class="${'form-control ' + (#fields.hasErrors('street') ? 'inputerror' : '')}" />
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-2 rowdist">
|
<div class="col-sm-2 rowdist">
|
||||||
<span class="error" th:each="error : ${#fields.errors('zip')}">[[${error}]]<br /></span>
|
<div>PLZ</div>
|
||||||
<input type="text" placeholder="PLZ" th:field="*{zip}" th:class="${'form-control ' + (#fields.hasErrors('zip') ? 'inputerror' : '')}" />
|
<input type="text" th:field="*{zip}" th:class="${'form-control ' + (#fields.hasErrors('zip') ? 'inputerror' : '')}" />
|
||||||
|
<span class="error" th:each="error : ${#fields.errors('zip')}">[[${error}]]</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-4 rowdist">
|
<div class="col-sm-4 rowdist">
|
||||||
<span class="error" th:each="error : ${#fields.errors('city')}">[[${error}]]<br /></span>
|
<div>Ort</div>
|
||||||
<input type="text" placeholder="Ort" th:field="*{city}" th:class="${'form-control ' + (#fields.hasErrors('city') ? 'inputerror' : '')}" />
|
<input type="text" th:field="*{city}" th:class="${'form-control ' + (#fields.hasErrors('city') ? 'inputerror' : '')}" />
|
||||||
</div>
|
<span class="error" th:each="error : ${#fields.errors('city')}">[[${error}]]</span>
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-6 rowdist">
|
|
||||||
<span class="error" th:each="error : ${#fields.errors('email')}">[[${error}]]<br /></span>
|
|
||||||
<input type="text" placeholder="E-Mail" th:field="*{email}" th:class="${'form-control ' + (#fields.hasErrors('email') ? 'inputerror' : '')}" />
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 rowdist">
|
<div class="col-sm-6 rowdist">
|
||||||
<span class="error" th:each="error : ${#fields.errors('phone')}">[[${error}]]<br /></span>
|
<div>E-Mail</div>
|
||||||
<input type="text" placeholder="Telefonnummer" th:field="*{phone}" th:class="${'form-control' + (#fields.hasErrors('phone') ? 'inputerror' : '')}" />
|
<input type="text" th:field="*{email}" th:class="${'form-control ' + (#fields.hasErrors('email') ? 'inputerror' : '')}" />
|
||||||
</div>
|
<span class="error" th:each="error : ${#fields.errors('email')}">[[${error}]]</span>
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-6 rowdist">
|
|
||||||
<span>mitkommen als</span>
|
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 rowdist">
|
<div class="col-sm-6 rowdist">
|
||||||
<span class="error" th:each="error : ${#fields.errors('campRole')}">[[${error}]]<br /></span>
|
<div>Telefonnummer</div>
|
||||||
|
<input type="text" th:field="*{phone}" th:class="${'form-control' + (#fields.hasErrors('phone') ? 'inputerror' : '')}" />
|
||||||
|
<span class="error" th:each="error : ${#fields.errors('phone')}">[[${error}]]</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 rowdist">
|
||||||
|
<div>mitkommen als</div>
|
||||||
<select th:field="*{campRole}" th:class="${'form-select' + (#fields.hasErrors('campRole') ? 'inputerror' : '')}">
|
<select th:field="*{campRole}" th:class="${'form-select' + (#fields.hasErrors('campRole') ? 'inputerror' : '')}">
|
||||||
<option th:each="o : ${roles}" th:value="${o.key}" th:text="${o.value}"></option>
|
<option th:each="o : ${roles}" th:value="${o.key}" th:text="${o.value}"></option>
|
||||||
</select>
|
</select>
|
||||||
|
<span class="error" th:each="error : ${#fields.errors('campRole')}">[[${error}]]</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 rowdist">
|
||||||
|
<div>Geschlecht</div>
|
||||||
|
<select th:field="*{sex}" th:class="${'form-select ' + (#fields.hasErrors('sex') ? 'inputerror' : '')}">
|
||||||
|
<option value="">-- wählen --</option>
|
||||||
|
<option th:each="o : ${sexes}" th:value="${o.key}" th:text="${o.value}"></option>
|
||||||
|
</select>
|
||||||
|
<span class="error" th:each="error : ${#fields.errors('sex')}">[[${error}]]</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-4 rowdist">
|
||||||
|
<div>Geburtsdatum</div>
|
||||||
|
<input type="date" th:field="*{birthDate}" th:class="${'form-control ' + (#fields.hasErrors('birthDate') ? 'inputerror' : '')}" onfocus="this.type = 'date'" onblur="this.type = 'text'" />
|
||||||
|
<span class="error" th:each="error : ${#fields.errors('birthDate')}">[[${error}]]</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
|
||||||
<div class="row">
|
|
||||||
<div class="col-sm-12 rowdist">
|
<div class="col-sm-12 rowdist">
|
||||||
<textarea class="form-control" placeholder="Sonstiges" th:field="*{comment}"></textarea>
|
<div>Sonstiges</div>
|
||||||
|
<textarea class="form-control" th:field="*{comment}"></textarea>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row" th:if="${#strings.isEmpty(currentUser)}">
|
<div class="row" th:if="${#strings.isEmpty(currentUser)}">
|
||||||
@ -88,12 +86,29 @@
|
|||||||
</div>
|
</div>
|
||||||
<div id="createlogin" class="row" th:if="${#strings.isEmpty(currentUser)}">
|
<div id="createlogin" class="row" th:if="${#strings.isEmpty(currentUser)}">
|
||||||
<div class="col-sm-6 rowdist">
|
<div class="col-sm-6 rowdist">
|
||||||
<span class="error" th:each="error : ${#fields.errors('login')}">[[${error}]]<br /></span>
|
<div>Nutzername</div>
|
||||||
<input type="text" placeholder="E-Mail" 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' : '')}" />
|
||||||
|
<span class="error" th:each="error : ${#fields.errors('login')}">[[${error}]]</span>
|
||||||
</div>
|
</div>
|
||||||
<div class="col-sm-6 rowdist">
|
<div class="col-sm-6 rowdist">
|
||||||
<span class="error" th:each="error : ${#fields.errors('password')}">[[${error}]]<br /></span>
|
<div>Passwort</div>
|
||||||
<input type="password" placeholder="Passwort" th:field="*{password}" th:class="${'form-control ' + (#fields.hasErrors('password') ? 'inputerror' : '')}" />
|
<input type="password" th:field="*{password}" th:class="${'form-control ' + (#fields.hasErrors('password') ? 'inputerror' : '')}" />
|
||||||
|
<span class="error" th:each="error : ${#fields.errors('password')}">[[${error}]]</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 rowdist">
|
||||||
|
<div>Vorname</div>
|
||||||
|
<input type="text" th:field="*{kcForename}" th:class="${'form-control ' + (#fields.hasErrors('kcForename') ? 'inputerror' : '')}" />
|
||||||
|
<span class="error" th:each="error : ${#fields.errors('kcForename')}">[[${error}]]</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-6 rowdist">
|
||||||
|
<div>Nachname</div>
|
||||||
|
<input type="text" th:field="*{kcSurname}" th:class="${'form-control ' + (#fields.hasErrors('kcSurname') ? 'inputerror' : '')}" />
|
||||||
|
<span class="error" th:each="error : ${#fields.errors('kcSurname')}">[[${error}]]</span>
|
||||||
|
</div>
|
||||||
|
<div class="col-sm-12 rowdist">
|
||||||
|
<div>E-Mail</div>
|
||||||
|
<input type="text" th:field="*{kcEmail}" th:class="${'form-control ' + (#fields.hasErrors('kcEmail') ? 'inputerror' : '')}" />
|
||||||
|
<span class="error" th:each="error : ${#fields.errors('kcEmail')}">[[${error}]]</span>
|
||||||
</div>
|
</div>
|
||||||
</div>
|
</div>
|
||||||
<div class="row">
|
<div class="row">
|
||||||
|
Loading…
x
Reference in New Issue
Block a user