mirror of
https://github.com/simon987/task_tracker.git
synced 2025-12-11 14:08:52 +00:00
Implement per-project webhook secret
This commit is contained in:
@@ -11,10 +11,11 @@ import (
|
||||
type ManagerRole int
|
||||
|
||||
const (
|
||||
ROLE_NONE ManagerRole = 0
|
||||
ROLE_READ ManagerRole = 1
|
||||
ROLE_EDIT ManagerRole = 2
|
||||
ROLE_MANAGE_ACCESS ManagerRole = 4
|
||||
RoleNone ManagerRole = 0
|
||||
RoleRead ManagerRole = 1
|
||||
RoleEdit ManagerRole = 2
|
||||
RoleManageAccess ManagerRole = 4
|
||||
RoleSecret ManagerRole = 8
|
||||
)
|
||||
|
||||
type Manager struct {
|
||||
@@ -142,7 +143,7 @@ func (database *Database) GetManagerRoleOn(manager *Manager, projectId int64) Ma
|
||||
var role ManagerRole
|
||||
err := row.Scan(&role)
|
||||
if err != nil {
|
||||
return ROLE_NONE
|
||||
return RoleNone
|
||||
}
|
||||
|
||||
return role
|
||||
|
||||
@@ -25,14 +25,14 @@ type AssignedTasks struct {
|
||||
TaskCount int64 `json:"task_count"`
|
||||
}
|
||||
|
||||
func (database *Database) SaveProject(project *Project) (int64, error) {
|
||||
func (database *Database) SaveProject(project *Project, webhookSecret string) (int64, error) {
|
||||
db := database.getDB()
|
||||
|
||||
row := db.QueryRow(`INSERT INTO project (name, git_repo, clone_url, version, priority,
|
||||
motd, public, hidden, chain, paused)
|
||||
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,NULLIF($9, 0),$10) RETURNING id`,
|
||||
motd, public, hidden, chain, paused, webhook_secret)
|
||||
VALUES ($1,$2,$3,$4,$5,$6,$7,$8,NULLIF($9, 0),$10,$11) RETURNING id`,
|
||||
project.Name, project.GitRepo, project.CloneUrl, project.Version, project.Priority, project.Motd,
|
||||
project.Public, project.Hidden, project.Chain, project.Paused)
|
||||
project.Public, project.Hidden, project.Chain, project.Paused, webhookSecret)
|
||||
|
||||
var id int64
|
||||
err := row.Scan(&id)
|
||||
@@ -225,3 +225,23 @@ func (database *Database) SetSecret(pid int64, secret string) {
|
||||
"project": pid,
|
||||
}).Info("Set secret")
|
||||
}
|
||||
|
||||
func (database *Database) GetWebhookSecret(pid int64) (secret string, err error) {
|
||||
db := database.getDB()
|
||||
row := db.QueryRow(`SELECT webhook_secret FROM project WHERE id=$1`, pid)
|
||||
err = row.Scan(&secret)
|
||||
return
|
||||
}
|
||||
|
||||
func (database *Database) SetWebhookSecret(pid int64, secret string) (err error) {
|
||||
db := database.getDB()
|
||||
res, err := db.Exec(`UPDATE project SET webhook_secret=$1 WHERE id=$2`, secret, pid)
|
||||
handleErr(err)
|
||||
|
||||
rowsAffected, _ := res.RowsAffected()
|
||||
logrus.WithFields(logrus.Fields{
|
||||
"project": pid,
|
||||
"rowsAffected": rowsAffected,
|
||||
}).Trace("Update webhook secret")
|
||||
return
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user