Skip to content

Commit d12bdf4

Browse files
committed
feat: notification banners
1 parent 341114a commit d12bdf4

File tree

22 files changed

+351
-88
lines changed

22 files changed

+351
-88
lines changed

agent/agentssh/agentssh.go

+2-2
Original file line numberDiff line numberDiff line change
@@ -63,7 +63,7 @@ type Config struct {
6363
// file will be displayed to the user upon login.
6464
MOTDFile func() string
6565
// ServiceBanner returns the configuration for the Coder service banner.
66-
ServiceBanner func() *codersdk.ServiceBannerConfig
66+
ServiceBanner func() *codersdk.BannerConfig
6767
// UpdateEnv updates the environment variables for the command to be
6868
// executed. It can be used to add, modify or replace environment variables.
6969
UpdateEnv func(current []string) (updated []string, err error)
@@ -124,7 +124,7 @@ func NewServer(ctx context.Context, logger slog.Logger, prometheusRegistry *prom
124124
config.MOTDFile = func() string { return "" }
125125
}
126126
if config.ServiceBanner == nil {
127-
config.ServiceBanner = func() *codersdk.ServiceBannerConfig { return &codersdk.ServiceBannerConfig{} }
127+
config.ServiceBanner = func() *codersdk.BannerConfig { return &codersdk.BannerConfig{} }
128128
}
129129
if config.WorkingDirectory == nil {
130130
config.WorkingDirectory = func() string {

coderd/apidoc/docs.go

+38-16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/apidoc/swagger.json

+38-16
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dbauthz/dbauthz.go

+12
Original file line numberDiff line numberDiff line change
@@ -1220,6 +1220,11 @@ func (q *querier) GetLogoURL(ctx context.Context) (string, error) {
12201220
return q.db.GetLogoURL(ctx)
12211221
}
12221222

1223+
func (q *querier) GetNotificationBanners(ctx context.Context) (string, error) {
1224+
// No authz checks
1225+
return q.db.GetServiceBanner(ctx)
1226+
}
1227+
12231228
func (q *querier) GetOAuth2ProviderAppByID(ctx context.Context, id uuid.UUID) (database.OAuth2ProviderApp, error) {
12241229
if err := q.authorizeContext(ctx, rbac.ActionRead, rbac.ResourceOAuth2ProviderApp); err != nil {
12251230
return database.OAuth2ProviderApp{}, err
@@ -3364,6 +3369,13 @@ func (q *querier) UpsertLogoURL(ctx context.Context, value string) error {
33643369
return q.db.UpsertLogoURL(ctx, value)
33653370
}
33663371

3372+
func (q *querier) UpsertNotificationBanners(ctx context.Context, value string) error {
3373+
if err := q.authorizeContext(ctx, rbac.ActionCreate, rbac.ResourceDeploymentValues); err != nil {
3374+
return err
3375+
}
3376+
return q.db.UpsertServiceBanner(ctx, value)
3377+
}
3378+
33673379
func (q *querier) UpsertOAuthSigningKey(ctx context.Context, value string) error {
33683380
if err := q.authorizeContext(ctx, rbac.ActionUpdate, rbac.ResourceSystem); err != nil {
33693381
return err

coderd/database/dbmem/dbmem.go

+20
Original file line numberDiff line numberDiff line change
@@ -186,6 +186,7 @@ type data struct {
186186
derpMeshKey string
187187
lastUpdateCheck []byte
188188
serviceBanner []byte
189+
notificationBanners []byte
189190
healthSettings []byte
190191
applicationName string
191192
logoURL string
@@ -2488,6 +2489,17 @@ func (q *FakeQuerier) GetLogoURL(_ context.Context) (string, error) {
24882489
return q.logoURL, nil
24892490
}
24902491

2492+
func (q *FakeQuerier) GetNotificationBanners(_ context.Context) (string, error) {
2493+
q.mutex.RLock()
2494+
defer q.mutex.RUnlock()
2495+
2496+
if q.notificationBanners == nil {
2497+
return "", sql.ErrNoRows
2498+
}
2499+
2500+
return string(q.notificationBanners), nil
2501+
}
2502+
24912503
func (q *FakeQuerier) GetOAuth2ProviderAppByID(_ context.Context, id uuid.UUID) (database.OAuth2ProviderApp, error) {
24922504
q.mutex.Lock()
24932505
defer q.mutex.Unlock()
@@ -8251,6 +8263,14 @@ func (q *FakeQuerier) UpsertLogoURL(_ context.Context, data string) error {
82518263
return nil
82528264
}
82538265

8266+
func (q *FakeQuerier) UpsertNotificationBanners(_ context.Context, data string) error {
8267+
q.mutex.RLock()
8268+
defer q.mutex.RUnlock()
8269+
8270+
q.notificationBanners = []byte(data)
8271+
return nil
8272+
}
8273+
82548274
func (q *FakeQuerier) UpsertOAuthSigningKey(_ context.Context, value string) error {
82558275
q.mutex.Lock()
82568276
defer q.mutex.Unlock()

coderd/database/dbmetrics/dbmetrics.go

+14
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/dbmock/dbmock.go

+29
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/querier.go

+2
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries.sql.go

+21
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

coderd/database/queries/siteconfig.sql

+7
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,13 @@ ON CONFLICT (key) DO UPDATE SET value = $1 WHERE site_configs.key = 'service_ban
4343
-- name: GetServiceBanner :one
4444
SELECT value FROM site_configs WHERE key = 'service_banner';
4545

46+
-- name: UpsertNotificationBanners :exec
47+
INSERT INTO site_configs (key, value) VALUES ('notification_banners', $1)
48+
ON CONFLICT (key) DO UPDATE SET value = $1 WHERE site_configs.key = 'notification_banners';
49+
50+
-- name: GetNotificationBanners :one
51+
SELECT value FROM site_configs WHERE key = 'notification_banners';
52+
4653
-- name: UpsertLogoURL :exec
4754
INSERT INTO site_configs (key, value) VALUES ('logo_url', $1)
4855
ON CONFLICT (key) DO UPDATE SET value = $1 WHERE site_configs.key = 'logo_url';

0 commit comments

Comments
 (0)