Skip to content

Commit 624ab65

Browse files
committed
fix: elevate session on login
1 parent 5305174 commit 624ab65

3 files changed

Lines changed: 15 additions & 6 deletions

File tree

api/oidc.go

Lines changed: 5 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -417,10 +417,12 @@ func (a *OIDCAPI) resolveUser(info *oidc.UserInfo) (*model.User, int, error) {
417417
}
418418

419419
func (a *OIDCAPI) createClient(name string, userID uint) (*model.Client, error) {
420+
elevatedUntil := time.Now().Add(model.DefaultElevationDuration)
420421
client := &model.Client{
421-
Name: name,
422-
Token: auth.GenerateNotExistingToken(generateClientToken, func(t string) bool { c, _ := a.DB.GetClientByToken(t); return c != nil }),
423-
UserID: userID,
422+
Name: name,
423+
Token: auth.GenerateNotExistingToken(generateClientToken, func(t string) bool { c, _ := a.DB.GetClientByToken(t); return c != nil }),
424+
UserID: userID,
425+
ElevatedUntil: &elevatedUntil,
424426
}
425427
return client, a.DB.CreateClient(client)
426428
}

api/session.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ package api
22

33
import (
44
"errors"
5+
"time"
56

67
"github.com/gin-gonic/gin"
78
"github.com/gotify/server/v2/auth"
@@ -74,10 +75,12 @@ func (a *SessionAPI) Login(ctx *gin.Context) {
7475
return
7576
}
7677

78+
elevatedUntil := time.Now().Add(model.DefaultElevationDuration)
7779
client := model.Client{
78-
Name: clientParams.Name,
79-
Token: auth.GenerateNotExistingToken(generateClientToken, a.clientExists),
80-
UserID: user.ID,
80+
Name: clientParams.Name,
81+
Token: auth.GenerateNotExistingToken(generateClientToken, a.clientExists),
82+
UserID: user.ID,
83+
ElevatedUntil: &elevatedUntil,
8184
}
8285
if success := successOrAbort(ctx, 500, a.DB.CreateClient(&client)); !success {
8386
return

model/elevate.go

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,7 @@
11
package model
22

3+
import "time"
4+
35
// ElevateRequest parameters for client elevation.
46
//
57
// swagger:model ElevateRequest
@@ -15,3 +17,5 @@ type ElevateRequest struct {
1517
// example: 900
1618
DurationSeconds int `form:"durationSeconds" query:"durationSeconds" json:"durationSeconds" binding:"required"`
1719
}
20+
21+
var DefaultElevationDuration = time.Hour

0 commit comments

Comments
 (0)