mirror of
https://github.com/coder/coder.git
synced 2026-06-02 20:48:20 +00:00
chore: include merged claims into the database (#15570)
Merging happens before IDP sync. Storing this will make some SQL queries much simplier.
This commit is contained in:
@@ -214,6 +214,9 @@ func (p AgentIDNamePair) Value() (driver.Value, error) {
|
||||
type UserLinkClaims struct {
|
||||
IDTokenClaims map[string]interface{} `json:"id_token_claims"`
|
||||
UserInfoClaims map[string]interface{} `json:"user_info_claims"`
|
||||
// MergeClaims are computed in Golang. It is the result of merging
|
||||
// the IDTokenClaims and UserInfoClaims. UserInfoClaims take precedence.
|
||||
MergedClaims map[string]interface{} `json:"merged_claims"`
|
||||
}
|
||||
|
||||
func (a *UserLinkClaims) Scan(src interface{}) error {
|
||||
|
||||
@@ -1326,6 +1326,7 @@ func (api *API) userOIDC(rw http.ResponseWriter, r *http.Request) {
|
||||
UserClaims: database.UserLinkClaims{
|
||||
IDTokenClaims: idtokenClaims,
|
||||
UserInfoClaims: userInfoClaims,
|
||||
MergedClaims: mergedClaims,
|
||||
},
|
||||
}).SetInitAuditRequest(func(params *audit.RequestParams) (*audit.Request[database.User], func()) {
|
||||
return audit.InitRequest[database.User](rw, params)
|
||||
|
||||
@@ -64,6 +64,16 @@ func TestUserLinks(t *testing.T) {
|
||||
"number": float64(2),
|
||||
},
|
||||
},
|
||||
MergedClaims: map[string]interface{}{
|
||||
"sub": "123",
|
||||
"groups": []interface{}{
|
||||
"foo", "bar",
|
||||
},
|
||||
"number": float64(2),
|
||||
"struct": map[string]interface{}{
|
||||
"number": float64(2),
|
||||
},
|
||||
},
|
||||
}
|
||||
|
||||
updated, err := crypt.UpdateUserLink(ctx, database.UpdateUserLinkParams{
|
||||
|
||||
Reference in New Issue
Block a user