Skip to content

Commit 9c3567d

Browse files
committed
refactored to pass rbac.Subject instead of small struct
1 parent e27f20a commit 9c3567d

File tree

5 files changed

+20
-27
lines changed

5 files changed

+20
-27
lines changed

coderd/database/dbauthz/dbauthz.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -474,7 +474,7 @@ func As(ctx context.Context, actor rbac.Subject) context.Context {
474474

475475
func InjectActorToContext(ctx context.Context, actor rbac.Subject) context.Context {
476476
if rlogger := loggermw.RequestLoggerFromContext(ctx); rlogger != nil {
477-
rlogger.WithAuthContext(actor.ID, actor.FriendlyName, actor.Email, actor.Type)
477+
rlogger.WithAuthContext(actor)
478478
}
479479
return context.WithValue(ctx, authContextKey{}, actor)
480480
}

coderd/database/queries.sql.go

Lines changed: 1 addition & 1 deletion
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/users.sql

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -300,7 +300,7 @@ WHERE
300300
-- This function returns roles for authorization purposes. Implied member roles
301301
-- are included.
302302
SELECT
303-
-- username is returned just to help for logging purposes
303+
-- username and email are returned just to help for logging purposes
304304
-- status is used to enforce 'suspended' users, as all roles are ignored
305305
-- when suspended.
306306
id, username, status, email,

coderd/httpmw/loggermw/logger.go

Lines changed: 13 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -63,22 +63,15 @@ func Logger(log slog.Logger) func(next http.Handler) http.Handler {
6363
type RequestLogger interface {
6464
WithFields(fields ...slog.Field)
6565
WriteLog(ctx context.Context, status int)
66-
WithAuthContext(id string, name string, email string, subjectType rbac.SubjectType)
66+
WithAuthContext(actor rbac.Subject)
6767
}
6868

6969
type SlogRequestLogger struct {
7070
log slog.Logger
7171
written bool
7272
message string
7373
start time.Time
74-
authCtx map[rbac.SubjectType]authContext
75-
}
76-
77-
type authContext struct {
78-
id string
79-
name string
80-
email string
81-
subjectType rbac.SubjectType
74+
actors map[rbac.SubjectType]rbac.Subject
8275
}
8376

8477
var _ RequestLogger = &SlogRequestLogger{}
@@ -89,30 +82,30 @@ func NewRequestLogger(log slog.Logger, message string, start time.Time) RequestL
8982
written: false,
9083
message: message,
9184
start: start,
92-
authCtx: make(map[rbac.SubjectType]authContext),
85+
actors: make(map[rbac.SubjectType]rbac.Subject),
9386
}
9487
}
9588

9689
func (c *SlogRequestLogger) WithFields(fields ...slog.Field) {
9790
c.log = c.log.With(fields...)
9891
}
9992

100-
func (c *SlogRequestLogger) WithAuthContext(id string, name string, email string, subjectType rbac.SubjectType) {
101-
c.authCtx[subjectType] = authContext{id, name, email, subjectType}
93+
func (c *SlogRequestLogger) WithAuthContext(actor rbac.Subject) {
94+
c.actors[actor.Type] = actor
10295
}
10396

10497
func (c *SlogRequestLogger) addAuthContextFields() {
105-
usr, ok := c.authCtx[rbac.SubjectTypeUser]
98+
usr, ok := c.actors[rbac.SubjectTypeUser]
10699
if ok {
107100
c.log = c.log.With(
108-
slog.F("requestor_id", usr.id),
109-
slog.F("requestor_name", usr.name),
110-
slog.F("requestor_email", usr.email),
101+
slog.F("requestor_id", usr.ID),
102+
slog.F("requestor_name", usr.FriendlyName),
103+
slog.F("requestor_email", usr.Email),
111104
)
112-
} else if len(c.authCtx) > 0 {
113-
for _, v := range c.authCtx {
105+
} else if len(c.actors) > 0 {
106+
for _, v := range c.actors {
114107
c.log = c.log.With(
115-
slog.F("requestor_name", v.name),
108+
slog.F("requestor_name", v.FriendlyName),
116109
)
117110
break
118111
}
@@ -126,7 +119,7 @@ func (c *SlogRequestLogger) WriteLog(ctx context.Context, status int) {
126119
c.written = true
127120
end := time.Now()
128121

129-
// Right before we write the log, we try to find the user in the authCtx
122+
// Right before we write the log, we try to find the user in the actors
130123
// and add the fields to the log.
131124
c.addAuthContextFields()
132125

coderd/httpmw/loggermw/loggermock/loggermock.go

Lines changed: 4 additions & 4 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

0 commit comments

Comments
 (0)
pFad - Phonifier reborn

Pfad - The Proxy pFad of © 2024 Garber Painting. All rights reserved.

Note: This service is not intended for secure transactions such as banking, social media, email, or purchasing. Use at your own risk. We assume no liability whatsoever for broken pages.


Alternative Proxies:

Alternative Proxy

pFad Proxy

pFad v3 Proxy

pFad v4 Proxy