mirror of
https://github.com/YunoHost/SSOwat.git
synced 2024-09-03 20:06:27 +02:00
[fix] Check already used email addresses + saving fix
This commit is contained in:
parent
c222132010
commit
87bd67547d
3 changed files with 36 additions and 5 deletions
35
access.lua
35
access.lua
|
@ -468,18 +468,25 @@ function do_edit ()
|
|||
if args.givenName and args.sn and args.mail then
|
||||
|
||||
local mailalias = {}
|
||||
if args["mailalias[]"] and type(args["mailalias[]"]) == "table" then
|
||||
if args["mailalias[]"] then
|
||||
if type(args["mailalias[]"]) == "string" then
|
||||
args["mailalias[]"] = {args["mailalias[]"]}
|
||||
end
|
||||
mailalias = args["mailalias[]"]
|
||||
end
|
||||
|
||||
local maildrop = {}
|
||||
if args["maildrop[]"] and type(args["maildrop[]"]) == "table" then
|
||||
if args["maildrop[]"] then
|
||||
if type(args["maildrop[]"]) == "string" then
|
||||
args["maildrop[]"] = {args["maildrop[]"]}
|
||||
end
|
||||
maildrop = args["maildrop[]"]
|
||||
end
|
||||
|
||||
local mail_pattern = "[A-Za-z0-9%.%%%+%-]+@[A-Za-z0-9%.%%%+%-]+%.%w%w%w?%w?"
|
||||
local domains = conf["domains"]
|
||||
local mails = {}
|
||||
local filter = "(|"
|
||||
table.insert(mailalias, 1, args.mail)
|
||||
for k, mail in ipairs(mailalias) do
|
||||
if mail ~= "" then
|
||||
|
@ -496,13 +503,15 @@ function do_edit ()
|
|||
end
|
||||
if domain_valid then
|
||||
table.insert(mails, mail)
|
||||
filter = filter.."(mail="..mail..")"
|
||||
else
|
||||
flash("fail", t("invalid_domain")..mail)
|
||||
flash("fail", t("invalid_domain").." "..mail)
|
||||
return redirect(portal_url.."edit.html")
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
filter = filter..")"
|
||||
|
||||
local drops = {}
|
||||
for k, mail in ipairs(maildrop) do
|
||||
|
@ -519,6 +528,26 @@ function do_edit ()
|
|||
local dn = conf["ldap_identifier"].."="..user..","..conf["ldap_group"]
|
||||
local ldap = lualdap.open_simple(conf["ldap_host"], dn, cache:get(user.."-password"))
|
||||
local cn = args.givenName.." "..args.sn
|
||||
for dn, attribs in ldap:search {
|
||||
base = conf["ldap_group"],
|
||||
scope = "onelevel",
|
||||
filter = filter,
|
||||
attrs = {conf["ldap_identifier"], "mail"}
|
||||
} do
|
||||
ngx.log(4, filter)
|
||||
ngx.log(4, attribs[conf["ldap_identifier"]])
|
||||
if attribs[conf["ldap_identifier"]] and attribs[conf["ldap_identifier"]] ~= user then
|
||||
if type(attribs["mail"]) == "string" then
|
||||
attribs["mail"] = {attribs["mail"]}
|
||||
end
|
||||
for _, mail in ipairs(attribs["mail"]) do
|
||||
if is_in_table(mails, mail) then
|
||||
flash("fail", t("mail_already_used").." "..mail)
|
||||
end
|
||||
end
|
||||
return redirect(portal_url.."edit.html")
|
||||
end
|
||||
end
|
||||
if ldap:modify(dn, {'=', cn = cn,
|
||||
givenName = args.givenName,
|
||||
sn = args.sn,
|
||||
|
|
|
@ -26,6 +26,7 @@
|
|||
"invalid_mail": "Invalid mail address",
|
||||
"invalid_domain": "Invalid domain in",
|
||||
"invalid_mailforward": "Invalid mail forward address",
|
||||
"mail_aleardy_used": "Mail address already used:",
|
||||
"informations_updated": "Informations updated",
|
||||
"user_saving_fail": "An error occured on user's modification saving",
|
||||
"missing_required_fields": "Required fields are missing",
|
||||
|
|
|
@ -23,9 +23,10 @@
|
|||
"password_changed_error": "Une erreur s'est produite lors du changement de mot de passe",
|
||||
"password_not_match": "Les nouveaux mots de passe ne correspondent pas",
|
||||
"wrong_current_password": "Le mot de passe actuel est faux",
|
||||
"invalid_mail": "Addresse email invalide",
|
||||
"invalid_mail": "Adresse email invalide",
|
||||
"invalid_domain": "Nom de domaine invalide dans",
|
||||
"invalid_mailforward": "Addresse email de transfert invalide",
|
||||
"invalid_mailforward": "Adresse email de transfert invalide",
|
||||
"mail_already_used": "Adresse déjà utilisée :",
|
||||
"informations_updated": "Informations mises à jour",
|
||||
"user_saving_fail": "Une erreur s'est produite lors de la modification des informations",
|
||||
"missing_required_fields": "Champs requis manquants",
|
||||
|
|
Loading…
Reference in a new issue