mirror of
https://github.com/coder/coder.git
synced 2026-09-24 15:04:27 +08:00
fix: Users that can update a template can also read the file (#6776)
* fix: Users that can update a template can also read the file This currently has a strange RBAC story. An issue will be filed to streamline this. This is a hotfix to resolve current functionality * Only showsource code tab if the user has permission to edit the template --------- Co-authored-by: Bruno Quaresma <bruno_nonato_quaresma@hotmail.com>
This commit is contained in:
co-authored by
Bruno Quaresma
parent
fc21e159b8
commit
7fa5afa268
@@ -685,6 +685,47 @@ func (q *fakeQuerier) GetFileByID(_ context.Context, id uuid.UUID) (database.Fil
|
||||
return database.File{}, sql.ErrNoRows
|
||||
}
|
||||
|
||||
func (q *fakeQuerier) GetFileTemplates(_ context.Context, id uuid.UUID) ([]database.GetFileTemplatesRow, error) {
|
||||
q.mutex.RLock()
|
||||
defer q.mutex.RUnlock()
|
||||
|
||||
rows := make([]database.GetFileTemplatesRow, 0)
|
||||
var file database.File
|
||||
for _, f := range q.files {
|
||||
if f.ID == id {
|
||||
file = f
|
||||
break
|
||||
}
|
||||
}
|
||||
if file.Hash == "" {
|
||||
return rows, nil
|
||||
}
|
||||
|
||||
for _, job := range q.provisionerJobs {
|
||||
if job.FileID == id {
|
||||
for _, version := range q.templateVersions {
|
||||
if version.JobID == job.ID {
|
||||
for _, template := range q.templates {
|
||||
if template.ID == version.TemplateID.UUID {
|
||||
rows = append(rows, database.GetFileTemplatesRow{
|
||||
FileID: file.ID,
|
||||
FileCreatedBy: file.CreatedBy,
|
||||
TemplateID: template.ID,
|
||||
TemplateOrganizationID: template.OrganizationID,
|
||||
TemplateCreatedBy: template.CreatedBy,
|
||||
UserACL: template.UserACL,
|
||||
GroupACL: template.GroupACL,
|
||||
})
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
return rows, nil
|
||||
}
|
||||
|
||||
func (q *fakeQuerier) GetUserByEmailOrUsername(_ context.Context, arg database.GetUserByEmailOrUsernameParams) (database.User, error) {
|
||||
if err := validateDatabaseType(arg); err != nil {
|
||||
return database.User{}, err
|
||||
|
||||
Reference in New Issue
Block a user