Gestione utenti, admin. Eliminato multibot

Signed-off-by: Ettore Dreucci <ettore.dreucci@gmail.com>
This commit is contained in:
2018-06-26 12:31:12 +02:00
parent b42027527a
commit 2960ea217a
7 changed files with 448 additions and 319 deletions

94
src/manageUser.go Normal file
View File

@@ -0,0 +1,94 @@
package main
import (
"encoding/json"
"log"
"strconv"
tb "gopkg.in/tucnak/telebot.v2"
)
func addUser(user *tb.User) error {
if redisClient == nil {
return ErrNilPointer
}
err := redisClient.SAdd(userSet, user.ID).Err()
if err != nil {
log.Printf("Error in adding user ID: %v", err)
return ErrRedisAddSet
}
jsonUser, err := json.Marshal(&user)
if err != nil {
log.Printf("Error in marshalling user to json: %v", err)
return ErrJSONMarshall
}
err = redisClient.HSet(userHash, strconv.Itoa(user.ID), jsonUser).Err()
if err != nil {
log.Printf("Error adding user info in hash: %v", err)
return ErrRedisAddHash
}
return nil
}
func isUser(userID int) (bool, error) {
if redisClient == nil {
return false, ErrNilPointer
}
user, err := redisClient.SIsMember(userSet, strconv.Itoa(userID)).Result()
if err != nil {
log.Printf("Error checking if ID is bot user: %v", err)
return false, ErrRedisCheckSet
}
return user, nil
}
func getUserInfo(userID int) (*tb.User, error) {
if redisClient == nil {
return nil, ErrNilPointer
}
user, err := redisClient.HGet(userHash, strconv.Itoa(userID)).Result()
if err != nil {
log.Printf("Error retriving user info from hash: %v", err)
return nil, ErrRedisRetrieveHash
}
jsonUser := &tb.User{}
err = json.Unmarshal([]byte(user), jsonUser)
if err != nil {
log.Printf("Error unmarshalling user info: %v", err)
return nil, ErrJSONUnmarshall
}
return jsonUser, nil
}
func isAuthrizedUser(userID int) (bool, error) {
if redisClient == nil {
return false, ErrNilPointer
}
auth, err := redisClient.SIsMember(authUserSet, strconv.Itoa(userID)).Result()
if err != nil {
log.Printf("Error checking if user is authorized: %v", err)
return false, ErrRedisCheckSet
}
return auth, nil
}
func authorizeUser(userID int, authorized bool) error {
if redisClient == nil {
return ErrNilPointer
}
if authorized {
err := redisClient.SAdd(authUserSet, strconv.Itoa(userID)).Err()
if err != nil {
log.Printf("Error adding token to set: %v", err)
return ErrRedisAddSet
}
} else {
err := redisClient.SRem(authUserSet, strconv.Itoa(userID)).Err()
if err != nil {
log.Printf("Error removing token from set: %v", err)
return ErrRedisRemSet
}
}
return nil
}