Gradation: add route to add missing users

This commit is contained in:
nemunaire 2023-03-06 12:53:03 +01:00
parent 107b17c11f
commit 3397b9f123
4 changed files with 104 additions and 6 deletions

View file

@ -4,6 +4,7 @@ import (
"fmt"
"log"
"net/http"
"regexp"
"strconv"
"strings"
"time"
@ -169,6 +170,33 @@ func getUsers() (users []User, err error) {
}
}
func getFilteredUsers(promo uint, group string) (users []User, err error) {
// Avoid SQL injection: check group name doesn't contains harmful content
var validGroup = regexp.MustCompile(`^[a-z0-9-]*$`)
if !validGroup.MatchString(group) {
return nil, fmt.Errorf("%q is not a valid group name", group)
}
if rows, errr := DBQuery("SELECT id_user, login, email, firstname, lastname, time, promo, groups, is_admin FROM users WHERE promo = ? AND groups LIKE '%,"+group+",%' ORDER BY promo DESC, id_user DESC", promo); errr != nil {
return nil, errr
} else {
defer rows.Close()
for rows.Next() {
var u User
if err = rows.Scan(&u.Id, &u.Login, &u.Email, &u.Firstname, &u.Lastname, &u.Time, &u.Promo, &u.Groups, &u.IsAdmin); err != nil {
return
}
users = append(users, u)
}
if err = rows.Err(); err != nil {
return
}
return
}
}
func getPromos() (promos []uint, err error) {
if rows, errr := DBQuery("SELECT DISTINCT promo FROM users ORDER BY promo DESC"); errr != nil {
return nil, errr