Trying a utility file
This commit is contained in:
parent
121477cc25
commit
a415ea4a96
4 changed files with 108 additions and 115 deletions
62
invite.go
62
invite.go
|
@ -52,10 +52,12 @@ func handleInvitationCode(w http.ResponseWriter, r *http.Request) {
|
|||
code := mux.Vars(r)["code"]
|
||||
code_id, code_pw := readCode(code)
|
||||
|
||||
l := ldapOpen(w)
|
||||
if l == nil {
|
||||
return
|
||||
}
|
||||
login := checkLogin(w, r)
|
||||
|
||||
// l := ldapOpen(w)
|
||||
// if l == nil {
|
||||
// return
|
||||
// }
|
||||
|
||||
inviteDn := config.InvitationNameAttr + "=" + code_id + "," + config.InvitationBaseDN
|
||||
err := l.Bind(inviteDn, code_pw)
|
||||
|
@ -117,10 +119,14 @@ func handleNewAccount(w http.ResponseWriter, r *http.Request, l *ldap.Conn, invi
|
|||
if r.Method == "POST" {
|
||||
r.ParseForm()
|
||||
|
||||
data.Username = strings.TrimSpace(strings.Join(r.Form["username"], ""))
|
||||
data.DisplayName = strings.TrimSpace(strings.Join(r.Form["displayname"], ""))
|
||||
data.GivenName = strings.TrimSpace(strings.Join(r.Form["givenname"], ""))
|
||||
data.Surname = strings.TrimSpace(strings.Join(r.Form["surname"], ""))
|
||||
newUser := NewUser{}
|
||||
|
||||
newUser.CN = strings.TrimSpace(strings.Join(r.Form["username"], "@lesgv.com"))
|
||||
newUser.DisplayName = strings.TrimSpace(strings.Join(r.Form["displayname"], ""))
|
||||
newUser.GivenName = strings.TrimSpace(strings.Join(r.Form["givenname"], ""))
|
||||
newUser.SN = strings.TrimSpace(strings.Join(r.Form["surname"], ""))
|
||||
newUser.UID = strings.TrimSpace(strings.Join(r.Form["username"], ""))
|
||||
newUser.Mail = strings.TrimSpace(strings.Join(r.Form["mail"], ""))
|
||||
|
||||
password1 := strings.Join(r.Form["password"], "")
|
||||
password2 := strings.Join(r.Form["password2"], "")
|
||||
|
@ -248,19 +254,12 @@ func handleInviteSendCode(w http.ResponseWriter, r *http.Request) {
|
|||
|
||||
// carLicense
|
||||
|
||||
|
||||
if r.Method == "POST" {
|
||||
r.ParseForm()
|
||||
data := &SendCodeData{
|
||||
WebBaseAddress: config.WebAddress,
|
||||
}
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// modify_request := ldap.NewModifyRequest(login.UserEntry.DN, nil)
|
||||
// // choice := strings.Join(r.Form["choice"], "")
|
||||
// // sendto := strings.Join(r.Form["sendto"], "")
|
||||
|
@ -277,7 +276,7 @@ func handleInviteSendCode(w http.ResponseWriter, r *http.Request) {
|
|||
// data.CodeDisplay = code
|
||||
// }
|
||||
log.Printf(fmt.Sprintf("279: %v %v %v", code, code_id, code_pw))
|
||||
addReq := ldap.NewAddRequest("documentIdentifier=" + code_id + "," + config.InvitationBaseDN,nil)
|
||||
addReq := ldap.NewAddRequest("documentIdentifier="+code_id+","+config.InvitationBaseDN, nil)
|
||||
addReq.Attribute("objectClass", []string{"top", "document", "simpleSecurityObject"})
|
||||
addReq.Attribute("cn", []string{code})
|
||||
addReq.Attribute("userPassword", []string{code_pw})
|
||||
|
@ -293,22 +292,14 @@ func handleInviteSendCode(w http.ResponseWriter, r *http.Request) {
|
|||
data.CodeDisplay = code
|
||||
}
|
||||
|
||||
|
||||
|
||||
templateInviteSendCode.Execute(w, data)
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// if choice == "display" || choice == "send" {
|
||||
// log.Printf(fmt.Sprintf("260: %v %v %v %v", login, choice, sendto, data))
|
||||
// trySendCode(login, choice, sendto, data)
|
||||
// }
|
||||
}
|
||||
|
||||
|
||||
}
|
||||
|
||||
func trySendCode(login *LoginStatus, choice string, sendto string, data *SendCodeData) {
|
||||
|
@ -318,11 +309,6 @@ func trySendCode(login *LoginStatus, choice string, sendto string, data *SendCod
|
|||
log.Printf(fmt.Sprintf("272: %v %v %v", code, code_id, code_pw))
|
||||
// Create invitation object in database
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// len_base_dn := len(strings.Split(config.BaseDN, ","))
|
||||
// dn_split := strings.Split(super_dn, ",")
|
||||
// for i := len_base_dn + 1; i <= len(dn_split); i++ {
|
||||
|
@ -360,11 +346,11 @@ func trySendCode(login *LoginStatus, choice string, sendto string, data *SendCod
|
|||
// req := ldap.NewAddRequest(dn, nil)
|
||||
// req.Attribute("objectclass", object_class)
|
||||
// // req.Attribute("mail", []string{data.IdValue})
|
||||
// /*
|
||||
// /*
|
||||
// if data.StructuralObjectClass != "" {
|
||||
// req.Attribute("structuralobjectclass", []string{data.StructuralObjectClass})
|
||||
// }
|
||||
// */
|
||||
// */
|
||||
// if data.DisplayName != "" {
|
||||
// req.Attribute("displayname", []string{data.DisplayName})
|
||||
// }
|
||||
|
@ -384,9 +370,9 @@ func trySendCode(login *LoginStatus, choice string, sendto string, data *SendCod
|
|||
// req.Attribute("description", []string{data.Description})
|
||||
// }
|
||||
// err := login.conn.Add(req)
|
||||
// // log.Printf(fmt.Sprintf("899: %v",err))
|
||||
// // log.Printf(fmt.Sprintf("899: %v",req))
|
||||
// // log.Printf(fmt.Sprintf("899: %v",data))
|
||||
// // log.Printf(fmt.Sprintf("899: %v",err))
|
||||
// // log.Printf(fmt.Sprintf("899: %v",req))
|
||||
// // log.Printf(fmt.Sprintf("899: %v",data))
|
||||
// if err != nil {
|
||||
// data.Error = err.Error()
|
||||
// } else {
|
||||
|
@ -397,13 +383,6 @@ func trySendCode(login *LoginStatus, choice string, sendto string, data *SendCod
|
|||
// }
|
||||
// }
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
|
||||
// inviteDn := config.InvitationNameAttr + "=" + code_id + "," + config.InvitationBaseDN
|
||||
// req := ldap.NewAddRequest(inviteDn, nil)
|
||||
// pw, err := SSHAEncode(code_pw)
|
||||
|
@ -493,4 +472,3 @@ func readCode(code string) (code_id string, code_pw string) {
|
|||
code_pw = hex.EncodeToString(pw_hash[:16])
|
||||
return code_id, code_pw
|
||||
}
|
||||
|
||||
|
|
|
@ -43,7 +43,7 @@
|
|||
Inviter des gens sur {{.Org}}
|
||||
</div>
|
||||
<div class="list-group list-group-flush">
|
||||
<a class="list-group-item list-group-item-action" href="/invite/send_code">Envoyer un code d'invitation</a>
|
||||
<!-- <a class="list-group-item list-group-item-action" href="/invite/send_code">Envoyer un code d'invitation</a> -->
|
||||
<a class="list-group-item list-group-item-action" href="/invite/new_account">Créer un nouveau compte directement</a>
|
||||
</div>
|
||||
</div>
|
||||
|
|
|
@ -5,76 +5,86 @@
|
|||
<h4>Création d'un nouveau compte</h4>
|
||||
<a class="ml-auto btn btn-info" href="/">Retour</a>
|
||||
</div>
|
||||
|
||||
{{if .ErrorMessage}}
|
||||
<div class="alert alert-danger mt-4">Impossible de créer le compte.
|
||||
<div style="font-size: 0.8em">{{ .ErrorMessage }}</div>
|
||||
</div>
|
||||
{{end}}
|
||||
{{if .WarningMessage}}
|
||||
<div class="alert alert-danger mt-4">Des erreurs se sont produites, le compte pourrait ne pas être totalement fonctionnel.
|
||||
<div style="font-size: 0.8em">{{ .WarningMessage }}</div>
|
||||
</div>
|
||||
{{end}}
|
||||
{{if .Success}}
|
||||
<div class="alert alert-success mt-4">
|
||||
Le compe a été créé !
|
||||
Rendez-vous <a href="/logout">sur la page d'accueil</a> pour vous connecter avec ce nouveau compte.
|
||||
</div>
|
||||
{{else}}
|
||||
<form method="POST" class="mt-4">
|
||||
<h5>Renseignements obligatoires</h5>
|
||||
<div class="form-group">
|
||||
<label for="username">Identifiant souhaité :</label>
|
||||
<input type="text" id="username" name="username" class="form-control" value="{{ .Username }}" />
|
||||
<small class="form-text text-muted">
|
||||
Votre identifiant doit être en minuscule.
|
||||
</small>
|
||||
</div>
|
||||
{{if .ErrorInvalidUsername}}
|
||||
<div class="alert alert-warning">
|
||||
Nom d'utilisateur invalide. Ne peut contenir que les caractères suivants : chiffres, lettres minuscules, point, tiret bas (_) et tiret du milieu (-).
|
||||
</div>
|
||||
{{end}}
|
||||
{{if .ErrorUsernameTaken}}
|
||||
<div class="alert alert-warning">
|
||||
Ce nom d'utilisateur est déjà pris.
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="form-group">
|
||||
<label for="password">Mot de passe :</label>
|
||||
<input type="password" id="password" name="password" class="form-control" />
|
||||
<small class="form-text text-muted">
|
||||
La seule contrainte est que votre mot de passe doit faire au moins 8 caractères. Utilisez chiffres, majuscules, et caractères spéciaux sans modération !
|
||||
</small>
|
||||
</div>
|
||||
{{if .ErrorPasswordTooShort}}
|
||||
<div class="alert alert-warning">
|
||||
Le mot de passe choisi est trop court (minimum 8 caractères).
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="form-group">
|
||||
<label for="password2">Répéter le mot de passe :</label>
|
||||
<input type="password" id="password2" name="password2" class="form-control" />
|
||||
</div>
|
||||
{{if .ErrorPasswordMismatch}}
|
||||
<div class="alert alert-warning">
|
||||
Les deux mots de passe entrés ne correspondent pas.
|
||||
</div>
|
||||
{{end}}
|
||||
<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="givenname">Prénom :</label>
|
||||
<input type="text" id="givenname" name="givenname" class="form-control" value="{{ .GivenName }}" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="surname">Nom de famille :</label>
|
||||
<input type="text" id="surname" name="surname" class="form-control" value="{{ .Surname }}" />
|
||||
</div>
|
||||
<button type="submit" class="btn btn-primary">Créer le compte</button>
|
||||
</form>
|
||||
{{end}}
|
||||
{{if .ErrorMessage}}
|
||||
<div class="alert alert-danger mt-4">Impossible de créer le compte.
|
||||
<div style="font-size: 0.8em">{{ .ErrorMessage }}</div>
|
||||
</div>
|
||||
{{end}}
|
||||
{{if .WarningMessage}}
|
||||
<div class="alert alert-danger mt-4">Des erreurs se sont produites, le compte pourrait ne pas être totalement
|
||||
fonctionnel.
|
||||
<div style="font-size: 0.8em">{{ .WarningMessage }}</div>
|
||||
</div>
|
||||
{{end}}
|
||||
{{if .Success}}
|
||||
<div class="alert alert-success mt-4">
|
||||
Le compe a été créé !
|
||||
Rendez-vous <a href="/logout">sur la page d'accueil</a> pour vous connecter avec ce nouveau compte.
|
||||
</div>
|
||||
{{else}}
|
||||
<form method="POST" class="mt-4">
|
||||
<div class="form-group">
|
||||
<label for="username">Identifiant souhaité :</label>
|
||||
<input type="text" id="username" name="username" class="form-control" value="{{ .Username }}" />
|
||||
<small class="form-text text-muted">
|
||||
Votre identifiant doit être en minuscule.
|
||||
</small>
|
||||
</div>
|
||||
<div id="calc-uid"></div>
|
||||
<div id="calc-cn"></div>
|
||||
{{if .ErrorInvalidUsername}}
|
||||
<div class="alert alert-warning">
|
||||
Nom d'utilisateur invalide. Ne peut contenir que les caractères suivants : chiffres, lettres minuscules, point,
|
||||
tiret bas (_) et tiret du milieu (-).
|
||||
</div>
|
||||
{{end}}
|
||||
{{if .ErrorUsernameTaken}}
|
||||
<div class="alert alert-warning">
|
||||
Ce nom d'utilisateur est déjà pris.
|
||||
</div>
|
||||
{{end}}
|
||||
<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">
|
||||
<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="givenname">Prénom :</label>
|
||||
<input type="text" id="givenname" name="givenname" class="form-control" value="{{ .GivenName }}" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="surname">Nom de famille :</label>
|
||||
<input type="text" id="surname" name="surname" class="form-control" value="{{ .Surname }}" />
|
||||
</div>
|
||||
<div class="form-group">
|
||||
<label for="password">Mot de passe :</label>
|
||||
<input type="password" id="password" name="password" class="form-control" />
|
||||
<small class="form-text text-muted">
|
||||
La seule contrainte est que votre mot de passe doit faire au moins 8 caractères. Utilisez chiffres, majuscules, et
|
||||
caractères spéciaux sans modération !
|
||||
</small>
|
||||
</div>
|
||||
{{if .ErrorPasswordTooShort}}
|
||||
<div class="alert alert-warning">
|
||||
Le mot de passe choisi est trop court (minimum 8 caractères).
|
||||
</div>
|
||||
{{end}}
|
||||
<div class="form-group">
|
||||
<label for="password2">Répéter le mot de passe :</label>
|
||||
<input type="password" id="password2" name="password2" class="form-control" />
|
||||
</div>
|
||||
{{if .ErrorPasswordMismatch}}
|
||||
<div class="alert alert-warning">
|
||||
Les deux mots de passe entrés ne correspondent pas.
|
||||
</div>
|
||||
{{end}}
|
||||
<button type="submit" class="btn btn-primary">Créer le compte</button>
|
||||
</form>
|
||||
{{end}}
|
||||
{{end}}
|
5
utils.go
5
utils.go
|
@ -30,6 +30,7 @@ type NewUser struct {
|
|||
SN string
|
||||
UID string
|
||||
Description string
|
||||
Password string
|
||||
}
|
||||
|
||||
func openLdap(config ConfigFile) *ldap.Conn {
|
||||
|
@ -67,6 +68,10 @@ func addNewUser(newUser NewUser, config *ConfigFile, login *LoginStatus) bool {
|
|||
if newUser.Description != "" {
|
||||
req.Attribute("description", []string{newUser.Description})
|
||||
}
|
||||
if newUser.Password != "" {
|
||||
pw, _ := SSHAEncode(newUser.Password)
|
||||
req.Attribute("userPassword", []string{pw})
|
||||
}
|
||||
err := login.conn.Add(req)
|
||||
log.Printf(fmt.Sprintf("71: %v", err))
|
||||
log.Printf(fmt.Sprintf("72: %v", req))
|
||||
|
|
Loading…
Reference in a new issue