82 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
		
		
			
		
	
	
			82 lines
		
	
	
		
			1.9 KiB
		
	
	
	
		
			Go
		
	
	
	
	
	
| 
								 | 
							
								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")
							 | 
						||
| 
								 | 
							
								}
							 |