aboutsummaryrefslogtreecommitdiff
path: root/invite.go
diff options
context:
space:
mode:
authorQuentin <quentin@dufour.io>2023-09-26 06:44:36 +0000
committerQuentin <quentin@dufour.io>2023-09-26 06:44:36 +0000
commit49d8e81fbea0d4703a33e87a807927169a8060ac (patch)
treed0b655454d5e13ed2238060fee27fc0d951d64c8 /invite.go
parent1e75c21b65021da0c3c5a8be9be12114a2327464 (diff)
parent706ff58a6f6608719feda15075d50f978df39c5b (diff)
downloadguichet-49d8e81fbea0d4703a33e87a807927169a8060ac.tar.gz
guichet-49d8e81fbea0d4703a33e87a807927169a8060ac.zip
Merge pull request 'An API for Guichet' (#23) from api into main
Reviewed-on: https://git.deuxfleurs.fr/Deuxfleurs/guichet/pulls/23
Diffstat (limited to 'invite.go')
-rw-r--r--invite.go37
1 files changed, 19 insertions, 18 deletions
diff --git a/invite.go b/invite.go
index 1384d70..060947a 100644
--- a/invite.go
+++ b/invite.go
@@ -21,29 +21,29 @@ import (
var EMAIL_REGEXP = regexp.MustCompile("^[a-zA-Z0-9.!#$%&'*+\\/=?^_`{|}~-]+@[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?(?:\\.[a-zA-Z0-9](?:[a-zA-Z0-9-]{0,61}[a-zA-Z0-9])?)*$")
-func checkInviterLogin(w http.ResponseWriter, r *http.Request) *LoginStatus {
- login := checkLogin(w, r)
- if login == nil {
+func checkInviterLogin(w http.ResponseWriter, r *http.Request) *LoggedUser {
+ user := RequireUserHtml(w, r)
+ if user == nil {
return nil
}
- if !login.CanInvite {
+ if !user.Capabilities.CanInvite {
http.Error(w, "Not authorized to invite new users.", http.StatusUnauthorized)
return nil
}
- return login
+ return user
}
// New account creation directly from interface
func handleInviteNewAccount(w http.ResponseWriter, r *http.Request) {
- login := checkInviterLogin(w, r)
- if login == nil {
+ user := checkInviterLogin(w, r)
+ if user == nil {
return
}
- handleNewAccount(w, r, login.conn, login.Info.DN)
+ handleNewAccount(w, r, user.Login.conn, user.Login.Info.DN())
}
// New account creation using code
@@ -52,14 +52,15 @@ 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
+ l, err := NewLdapCon()
+ if err != nil {
+ http.Error(w, err.Error(), http.StatusInternalServerError)
}
inviteDn := config.InvitationNameAttr + "=" + code_id + "," + config.InvitationBaseDN
- err := l.Bind(inviteDn, code_pw)
+ err = l.Bind(inviteDn, code_pw)
if err != nil {
+ log.Println(err)
templateInviteInvalidCode := getTemplate("invite_invalid_code.html")
templateInviteInvalidCode.Execute(w, nil)
return
@@ -241,8 +242,8 @@ type CodeMailFields struct {
func handleInviteSendCode(w http.ResponseWriter, r *http.Request) {
templateInviteSendCode := getTemplate("invite_send_code.html")
- login := checkInviterLogin(w, r)
- if login == nil {
+ user := checkInviterLogin(w, r)
+ if user == nil {
return
}
@@ -257,14 +258,14 @@ func handleInviteSendCode(w http.ResponseWriter, r *http.Request) {
sendto := strings.Join(r.Form["sendto"], "")
if choice == "display" || choice == "send" {
- trySendCode(login, choice, sendto, data)
+ trySendCode(user, choice, sendto, data)
}
}
templateInviteSendCode.Execute(w, data)
}
-func trySendCode(login *LoginStatus, choice string, sendto string, data *SendCodeData) {
+func trySendCode(user *LoggedUser, choice string, sendto string, data *SendCodeData) {
// Generate code
code, code_id, code_pw := genCode()
@@ -279,7 +280,7 @@ func trySendCode(login *LoginStatus, choice string, sendto string, data *SendCod
req.Attribute("userpassword", []string{pw})
req.Attribute("objectclass", []string{"top", "invitationCode"})
- err = login.conn.Add(req)
+ err = user.Login.conn.Add(req)
if err != nil {
data.ErrorMessage = err.Error()
return
@@ -303,7 +304,7 @@ func trySendCode(login *LoginStatus, choice string, sendto string, data *SendCod
templateMail.Execute(buf, &CodeMailFields{
To: sendto,
From: config.MailFrom,
- InviteFrom: login.WelcomeName(),
+ InviteFrom: user.WelcomeName(),
Code: code,
WebBaseAddress: config.WebAddress,
})