initial import
This commit is contained in:
		
							
								
								
									
										81
									
								
								models/user.go
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										81
									
								
								models/user.go
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,81 @@
 | 
			
		||||
package models
 | 
			
		||||
 | 
			
		||||
import (
 | 
			
		||||
	"errors"
 | 
			
		||||
	"fmt"
 | 
			
		||||
	"os"
 | 
			
		||||
	"strconv"
 | 
			
		||||
 | 
			
		||||
	"forge.redroom.link/yves/sqldb"
 | 
			
		||||
	"github.com/lib/pq"
 | 
			
		||||
	"github.com/rs/zerolog/log"
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
var (
 | 
			
		||||
	UsersRights map[string]*UserRight
 | 
			
		||||
	username    string
 | 
			
		||||
)
 | 
			
		||||
 | 
			
		||||
func GetLogin(user string) {
 | 
			
		||||
	username = user
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func Init() {
 | 
			
		||||
	UsersRights = make(map[string]*UserRight)
 | 
			
		||||
	db := sqldb.Open(os.Getenv("driverdb"), os.Getenv("paramsdb"))
 | 
			
		||||
	query, err := db.QueryAssociativeArray("SELECT dbuser.*, dbuserrole.entity_id AS entity_id, dbuserrole.dbrole_id AS role_id, dbtableaccess.userrolerestrictions AS restrictions FROM dbuser INNER JOIN dbuserrole AS dbuserrole ON dbuser.id = dbuserrole.dbuser_id INNER JOIN dbrole ON dbuserrole.dbrole_id = dbrole.id INNER JOIN dbtableaccess ON dbtableaccess.dbrole_id = dbrole.id WHERE login =" + pq.QuoteLiteral(username) + ";")
 | 
			
		||||
	db.Close()
 | 
			
		||||
	if err != nil {
 | 
			
		||||
		log.Error().Msg(err.Error())
 | 
			
		||||
	}
 | 
			
		||||
	var UserId, EntityId, RoleId int
 | 
			
		||||
	var Restrictions, Password, Login string
 | 
			
		||||
 | 
			
		||||
	for _, element := range query {
 | 
			
		||||
		for key, element := range element {
 | 
			
		||||
			if key == "login" {
 | 
			
		||||
				Login = fmt.Sprintf("%v", element)
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
			if key == "id" {
 | 
			
		||||
				UserId, _ = strconv.Atoi(fmt.Sprintf("%v", element))
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
			if key == "password" {
 | 
			
		||||
				Password = fmt.Sprintf("%v", element)
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
			if key == "entity_id" {
 | 
			
		||||
				EntityId, _ = strconv.Atoi(fmt.Sprintf("%v", element))
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
			if key == "role_id" {
 | 
			
		||||
				RoleId, _ = strconv.Atoi(fmt.Sprintf("%v", element))
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
			if key == "restrictions" {
 | 
			
		||||
				Restrictions = Restrictions + fmt.Sprintf("%v", element) + "|"
 | 
			
		||||
 | 
			
		||||
			}
 | 
			
		||||
		}
 | 
			
		||||
	}
 | 
			
		||||
	UsersRights = make(map[string]*UserRight)
 | 
			
		||||
	u := UserRight{Login, UserId, RoleId, EntityId, Password, Restrictions}
 | 
			
		||||
	UsersRights[Login] = &u
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
type UserRight struct {
 | 
			
		||||
	Login        string
 | 
			
		||||
	UserId       int
 | 
			
		||||
	EntityId     int
 | 
			
		||||
	RoleId       int
 | 
			
		||||
	Password     string
 | 
			
		||||
	Restrictions string
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
func GetUser(uid string) (u *UserRight, err error) {
 | 
			
		||||
	if u, ok := UsersRights[uid]; ok {
 | 
			
		||||
		return u, nil
 | 
			
		||||
	}
 | 
			
		||||
	return nil, errors.New("user not exists")
 | 
			
		||||
}
 | 
			
		||||
		Reference in New Issue
	
	Block a user