mirror of
https://github.com/simon987/task_tracker.git
synced 2025-12-11 14:08:52 +00:00
More work on project permissions
This commit is contained in:
@@ -126,7 +126,7 @@ func (database *Database) UpdateManagerPassword(manager *Manager, newPassword []
|
||||
}).Trace("Database.UpdateManagerPassword UPDATE")
|
||||
}
|
||||
|
||||
func (database *Database) ManagerHasRoleOn(manager *Manager, projectId int64) ManagerRole {
|
||||
func (database *Database) GetManagerRoleOn(manager *Manager, projectId int64) ManagerRole {
|
||||
|
||||
db := database.getDB()
|
||||
|
||||
@@ -142,6 +142,25 @@ func (database *Database) ManagerHasRoleOn(manager *Manager, projectId int64) Ma
|
||||
return role
|
||||
}
|
||||
|
||||
func (database *Database) SetManagerRoleOn(manager *Manager, projectId int64, role ManagerRole) {
|
||||
|
||||
db := database.getDB()
|
||||
|
||||
res, err := db.Exec(`INSERT INTO manager_has_role_on_project (manager, role, project)
|
||||
VALUES ($1,$2,$3) ON CONFLICT (manager, project) DO UPDATE SET role=$2`,
|
||||
manager.Id, role, projectId)
|
||||
handleErr(err)
|
||||
|
||||
rowsAffected, _ := res.RowsAffected()
|
||||
|
||||
logrus.WithFields(logrus.Fields{
|
||||
"role": role,
|
||||
"manager": manager.Username,
|
||||
"rowsAffected": rowsAffected,
|
||||
"project": projectId,
|
||||
}).Info("Set manager role on project")
|
||||
}
|
||||
|
||||
func (database *Database) GetAllManagers() *[]Manager {
|
||||
|
||||
db := database.getDB()
|
||||
|
||||
@@ -127,13 +127,13 @@ func (database *Database) UpdateProject(project *Project) error {
|
||||
return nil
|
||||
}
|
||||
|
||||
func (database Database) GetAllProjects(workerId int64) *[]Project {
|
||||
func (database Database) GetAllProjects(managerId int64) *[]Project {
|
||||
projects := make([]Project, 0)
|
||||
|
||||
db := database.getDB()
|
||||
var rows *sql.Rows
|
||||
var err error
|
||||
if workerId == 0 {
|
||||
if managerId == 0 {
|
||||
rows, err = db.Query(`SELECT
|
||||
Id, priority, name, clone_url, git_repo, version, motd, public, hidden, COALESCE(chain,0)
|
||||
FROM project
|
||||
@@ -143,9 +143,9 @@ func (database Database) GetAllProjects(workerId int64) *[]Project {
|
||||
rows, err = db.Query(`SELECT
|
||||
Id, priority, name, clone_url, git_repo, version, motd, public, hidden, COALESCE(chain,0)
|
||||
FROM project
|
||||
LEFT JOIN worker_has_access_to_project whatp ON whatp.project = id
|
||||
WHERE NOT hidden OR whatp.worker = $1
|
||||
ORDER BY name`, workerId)
|
||||
LEFT JOIN manager_has_role_on_project mhrop ON mhrop.project = id AND mhrop.manager=$1
|
||||
WHERE NOT hidden OR mhrop.role & 1 = 1 OR (SELECT tracker_admin FROM manager WHERE id=$1)
|
||||
ORDER BY name`, managerId)
|
||||
}
|
||||
handleErr(err)
|
||||
|
||||
|
||||
Reference in New Issue
Block a user