Factoring the model user and correcting password

This commit is contained in:
Chris Mann 2023-07-22 11:33:47 +02:00
parent 5b9168fd1a
commit b8f125cb0f
3 changed files with 58 additions and 48 deletions

View file

@ -129,6 +129,7 @@ type NewAccountData struct {
Surname string Surname string
Mail string Mail string
SuggestPW string SuggestPW string
OtherMailbox string
ErrorUsernameTaken bool ErrorUsernameTaken bool
ErrorInvalidUsername bool ErrorInvalidUsername bool
@ -155,6 +156,7 @@ func handleNewAccount(w http.ResponseWriter, r *http.Request, l *ldap.Conn, invi
newUser.GivenName = strings.TrimSpace(strings.Join(r.Form["givenname"], "")) newUser.GivenName = strings.TrimSpace(strings.Join(r.Form["givenname"], ""))
newUser.SN = strings.TrimSpace(strings.Join(r.Form["surname"], "")) newUser.SN = strings.TrimSpace(strings.Join(r.Form["surname"], ""))
newUser.UID = strings.TrimSpace(strings.Join(r.Form["username"], "")) newUser.UID = strings.TrimSpace(strings.Join(r.Form["username"], ""))
newUser.OtherMailbox = strings.TrimSpace(strings.Join(r.Form["otherMailbox"], ""))
newUser.Mail = strings.TrimSpace(strings.Join(r.Form["mail"], "")) newUser.Mail = strings.TrimSpace(strings.Join(r.Form["mail"], ""))
newUser.DN = "cn=" + newUser.CN + "," + config.InvitationBaseDN newUser.DN = "cn=" + newUser.CN + "," + config.InvitationBaseDN

View file

@ -24,6 +24,7 @@ type User struct {
UID string UID string
Description string Description string
Password string Password string
OtherMailbox string
CanAdmin bool CanAdmin bool
CanInvite bool CanInvite bool
UserEntry *ldap.Entry UserEntry *ldap.Entry
@ -85,7 +86,7 @@ func add(user User, config *ConfigFile, ldapConn *ldap.Conn) error {
dn := user.DN dn := user.DN
req := ldap.NewAddRequest(dn, nil) req := ldap.NewAddRequest(dn, nil)
req.Attribute("objectClass", []string{"top", "inetOrgPerson"}) req.Attribute("objectClass", []string{"top", "inetOrgPerson", "pilotPerson"})
if user.DisplayName != "" { if user.DisplayName != "" {
req.Attribute("displayName", []string{user.DisplayName}) req.Attribute("displayName", []string{user.DisplayName})
} }

View file

@ -22,17 +22,6 @@
</div> </div>
{{else}} {{else}}
<form method="POST" class="mt-4"> <form method="POST" class="mt-4">
<div class="form-group">
<label for="displayname">Nom affiché :</label>
<input type="text" id="displayname" name="displayname" class="form-control" value="{{ .DisplayName }}" />
</div>
<div class="form-group">
<label for="mail">Email :</label>
<input type="text" id="mail" name="mail" class="form-control" value="{{ .Mail }}" />
<small class="form-text text-muted">
Le courriel de l'utilisateur.
</small>
</div>
<div class="form-group"> <div class="form-group">
<label for="givenname">Prénom :</label> <label for="givenname">Prénom :</label>
<input type="text" id="givenname" name="givenname" class="form-control" value="{{ .GivenName }}" /> <input type="text" id="givenname" name="givenname" class="form-control" value="{{ .GivenName }}" />
@ -41,6 +30,17 @@
<label for="surname">Nom de famille :</label> <label for="surname">Nom de famille :</label>
<input type="text" id="surname" name="surname" class="form-control" value="{{ .Surname }}" /> <input type="text" id="surname" name="surname" class="form-control" value="{{ .Surname }}" />
</div> </div>
<div class="form-group">
<label for="mail">Email de secours:</label>
<input type="text" id="othermailbox" name="othermailbox" class="form-control" value="{{ .OtherMailbox }}" />
<small class="form-text text-muted">
Le courriel de l'utilisateur.
</small>
</div>
<div class="form-group">
<label for="displayname">Nom affiché :</label>
<input type="text" id="displayname" name="displayname" class="form-control" value="{{ .DisplayName }}" />
</div>
<div class="form-group"> <div class="form-group">
<label for="username">Identifiant souhaité :</label> <label for="username">Identifiant souhaité :</label>
<input type="text" id="username" name="username" class="form-control" value="{{ .Username }}" /> <input type="text" id="username" name="username" class="form-control" value="{{ .Username }}" />
@ -61,6 +61,13 @@
Ce nom d'utilisateur est déjà pris. Ce nom d'utilisateur est déjà pris.
</div> </div>
{{end}} {{end}}
<div class="form-group">
<label for="mail">Email des GV:</label>
<input type="text" id="mail" name="mail" class="form-control" value="{{ .Mail }}" />
<small class="form-text text-muted">
Le courriel et login interne.
</small>
</div>
<p><a href="#" onClick="javascript:var suggestPW = Math.random().toString(36).slice(-10); document.getElementById('password').value='{{ .SuggestPW }}';document.getElementById('password2').value='{{ .SuggestPW }}';">Utiliser ce mot de passe :</a> {{ .SuggestPW }}</p> <p><a href="#" onClick="javascript:var suggestPW = Math.random().toString(36).slice(-10); document.getElementById('password').value='{{ .SuggestPW }}';document.getElementById('password2').value='{{ .SuggestPW }}';">Utiliser ce mot de passe :</a> {{ .SuggestPW }}</p>
<div class="form-group"> <div class="form-group">
<label for="password">Mot de passe :</label> <label for="password">Mot de passe :</label>
@ -88,27 +95,27 @@
</form> </form>
<script lang="javascript"> <script lang="javascript">
function changeDisplayname () { function changeGivenNameOrSurname () {
displayname = document.getElementById("displayname");
username = document.getElementById("username");
givenname = document.getElementById("givenname"); givenname = document.getElementById("givenname");
surname = document.getElementById("surname"); surname = document.getElementById("surname");
if (!username.value) { displayname = document.getElementById("displayname");
username.value = displayname.value; username = document.getElementById("username");
changeUsername(); displayname.value = givenname.value + " " + surname.value
} }
if (!givenname.value) { function changeDisplayname () {
givenname.value = displayname.value.split(" ")[0]; givenname = document.getElementById("givenname");
} surname = document.getElementById("surname");
if (!surname.value) { displayname = document.getElementById("displayname");
surname.value = displayname.value.split(" ")[1]; username = document.getElementById("username");
} username.value = displayname.value.toLowerCase().replace(/[^A-z0-9.-]/g, '').replace(/^[.-]/, '').replace(/[.-]$/, '');
} }
function changeUsername () { function changeUsername () {
givenname = document.getElementById("givenname");
surname = document.getElementById("surname");
displayname = document.getElementById("displayname");
username = document.getElementById("username"); username = document.getElementById("username");
calcCn = document.getElementById("calc-cn"); mail = document.getElementById("mail");
username.value = username.value.toLowerCase().replace(/[^A-z0-9.-]/g, ''); mail.value = username.value + "@lesgv.com";
calcCn.innerText = "Login Name et Courriel seront : " + username.value.split("@")[0] + "@lesgv.com";
} }
document.getElementById("username").addEventListener("change",changeUsername); document.getElementById("username").addEventListener("change",changeUsername);
document.getElementById("displayname").addEventListener("change",changeDisplayname); document.getElementById("displayname").addEventListener("change",changeDisplayname);