package session import ( "edge-infra.dev/pkg/edge/api/bsl/types" "edge-infra.dev/pkg/edge/api/graph/model" "edge-infra.dev/pkg/edge/auth-proxy/utils" ) // ToUserInstance maps an AuthUSer or OktaAuthPayload to a UserInstance func ToUserInstance(user interface{}) *UserInstance { switch usr := user.(type) { case *types.AuthUser: return &UserInstance{ username: usr.Username, email: usr.Email, token: usr.Token, refreshToken: usr.RefreshToken, authType: BSLAuthProvider, roles: utils.FilterEdgeRoles(usr.Roles), organization: usr.Organization, bannerEdgeIDs: bannersToBannerEdgeIDs(usr.Banners), } case *model.OktaAuthPayload: return &UserInstance{ username: usr.Username, email: usr.Email, token: usr.Token, refreshToken: usr.RefreshToken, authType: OktaAuthProvider, roles: utils.FilterEdgeRoles(usr.Roles), organization: usr.Organization, bannerEdgeIDs: bannersToBannerEdgeIDs(usr.Banners), } default: return nil } } func bannersToBannerEdgeIDs(banners []*model.Banner) (bannerEdgeIDs []string) { for _, banner := range banners { if banner.BannerEdgeID != "" { bannerEdgeIDs = append(bannerEdgeIDs, banner.BannerEdgeID) } } return bannerEdgeIDs }