mirror of
https://github.com/netbirdio/netbird.git
synced 2026-04-19 08:46:38 +00:00
refactor(idp): make NetBird single source of truth for authorization
Remove duplicate authorization data from Zitadel IdP. NetBird now stores all authorization data (account membership, invite status, roles) locally, while Zitadel only stores identity information (email, name, credentials). Changes: - Add PendingInvite field to User struct to track invite status locally - Simplify IdP Manager interface: remove metadata methods, add GetAllUsers - Update cache warming to match IdP users against NetBird DB - Remove addAccountIDToIDPAppMeta and all wt_* metadata writes - Delete legacy IdP managers (Auth0, Azure, Keycloak, Okta, Google Workspace, JumpCloud, Authentik, PocketId) - only Zitadel supported
This commit is contained in:
9974
management/server/types/testdata/networkmap_golden.json
vendored
Normal file
9974
management/server/types/testdata/networkmap_golden.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
9974
management/server/types/testdata/networkmap_golden_new.json
vendored
Normal file
9974
management/server/types/testdata/networkmap_golden_new.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
9862
management/server/types/testdata/networkmap_golden_new_with_deleted_router.json
vendored
Normal file
9862
management/server/types/testdata/networkmap_golden_new_with_deleted_router.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10086
management/server/types/testdata/networkmap_golden_new_with_onpeeradded.json
vendored
Normal file
10086
management/server/types/testdata/networkmap_golden_new_with_onpeeradded.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10086
management/server/types/testdata/networkmap_golden_new_with_onpeeradded_router.json
vendored
Normal file
10086
management/server/types/testdata/networkmap_golden_new_with_onpeeradded_router.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
9862
management/server/types/testdata/networkmap_golden_new_with_onpeerdeleted.json
vendored
Normal file
9862
management/server/types/testdata/networkmap_golden_new_with_onpeerdeleted.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
9862
management/server/types/testdata/networkmap_golden_with_deleted_peer.json
vendored
Normal file
9862
management/server/types/testdata/networkmap_golden_with_deleted_peer.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
9862
management/server/types/testdata/networkmap_golden_with_deleted_router_peer.json
vendored
Normal file
9862
management/server/types/testdata/networkmap_golden_with_deleted_router_peer.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10086
management/server/types/testdata/networkmap_golden_with_new_peer.json
vendored
Normal file
10086
management/server/types/testdata/networkmap_golden_with_new_peer.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
10086
management/server/types/testdata/networkmap_golden_with_new_router.json
vendored
Normal file
10086
management/server/types/testdata/networkmap_golden_with_new_router.json
vendored
Normal file
File diff suppressed because it is too large
Load Diff
@@ -85,6 +85,8 @@ type User struct {
|
||||
PATsG []PersonalAccessToken `json:"-" gorm:"foreignKey:UserID;references:id;constraint:OnDelete:CASCADE;"`
|
||||
// Blocked indicates whether the user is blocked. Blocked users can't use the system.
|
||||
Blocked bool
|
||||
// PendingInvite indicates whether the user has accepted their invite and logged in
|
||||
PendingInvite bool
|
||||
// PendingApproval indicates whether the user requires approval before being activated
|
||||
PendingApproval bool
|
||||
// LastLogin is the last time the user logged in to IdP
|
||||
@@ -162,7 +164,7 @@ func (u *User) ToUserInfo(userData *idp.UserData) (*UserInfo, error) {
|
||||
}
|
||||
|
||||
userStatus := UserStatusActive
|
||||
if userData.AppMetadata.WTPendingInvite != nil && *userData.AppMetadata.WTPendingInvite {
|
||||
if u.PendingInvite {
|
||||
userStatus = UserStatusInvited
|
||||
}
|
||||
|
||||
@@ -199,6 +201,7 @@ func (u *User) Copy() *User {
|
||||
ServiceUserName: u.ServiceUserName,
|
||||
PATs: pats,
|
||||
Blocked: u.Blocked,
|
||||
PendingInvite: u.PendingInvite,
|
||||
PendingApproval: u.PendingApproval,
|
||||
LastLogin: u.LastLogin,
|
||||
CreatedAt: u.CreatedAt,
|
||||
|
||||
Reference in New Issue
Block a user