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