mirror of
https://github.com/simon987/task_tracker.git
synced 2025-12-13 23:09:02 +00:00
Some work on permissions (lacks tests)
This commit is contained in:
@@ -10,9 +10,10 @@ import (
|
||||
type ManagerRole int
|
||||
|
||||
const (
|
||||
ROLE_NONE ManagerRole = 0
|
||||
ROLE_READ ManagerRole = 1
|
||||
ROLE_EDIT ManagerRole = 2
|
||||
ROLE_MANAGE_ACCESS ManagerRole = 3
|
||||
ROLE_MANAGE_ACCESS ManagerRole = 4
|
||||
)
|
||||
|
||||
type Manager struct {
|
||||
@@ -65,8 +66,8 @@ func (database *Database) SaveManager(manager *Manager, password []byte) error {
|
||||
hash.Write([]byte(manager.Username))
|
||||
hashedPassword := hash.Sum(nil)
|
||||
|
||||
row := db.QueryRow(`INSERT INTO manager (username, password, website_admin)
|
||||
VALUES ($1,$2,$3) RETURNING ID`,
|
||||
row := db.QueryRow(`INSERT INTO manager (username, password, website_admin, register_time)
|
||||
VALUES ($1,$2,$3, extract(epoch from now() at time zone 'utc')) RETURNING ID`,
|
||||
manager.Username, hashedPassword, manager.WebsiteAdmin)
|
||||
|
||||
err := row.Scan(&manager.Id)
|
||||
@@ -78,6 +79,8 @@ func (database *Database) SaveManager(manager *Manager, password []byte) error {
|
||||
return err
|
||||
}
|
||||
|
||||
manager.WebsiteAdmin = manager.Id == 1
|
||||
|
||||
logrus.WithFields(logrus.Fields{
|
||||
"manager": manager,
|
||||
}).Info("Database.SaveManager INSERT")
|
||||
@@ -121,3 +124,19 @@ func (database *Database) UpdateManagerPassword(manager *Manager, newPassword []
|
||||
"id": manager.Id,
|
||||
}).Warning("Database.UpdateManagerPassword UPDATE")
|
||||
}
|
||||
|
||||
func (database *Database) ManagerHasRoleOn(manager *Manager, projectId int64) ManagerRole {
|
||||
|
||||
db := database.getDB()
|
||||
|
||||
row := db.QueryRow(`SELECT role FROM manager_has_role_on_project
|
||||
WHERE project=$1 AND manager=$2`, projectId, manager.Id)
|
||||
|
||||
var role ManagerRole
|
||||
err := row.Scan(&role)
|
||||
if err != nil {
|
||||
return ROLE_NONE
|
||||
}
|
||||
|
||||
return role
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user