@@ -36,48 +36,56 @@ export async function loader({
36
36
if ( context . oidc && ! request . url . endsWith ( '/onboarding' ) ) {
37
37
let onboarded = false ;
38
38
39
- try {
40
- const { users } = await context . client . get < { users : User [ ] } > (
41
- 'v1/user' ,
42
- session . get ( 'api_key' ) ! ,
43
- ) ;
39
+ const sessionUser = session . get ( 'user' ) ;
40
+ if ( sessionUser ) {
41
+ if ( context . sessions . onboardForSubject ( sessionUser . subject ) ) {
42
+ // Assume onboarded
43
+ onboarded = true ;
44
+ } else {
45
+ try {
46
+ const { users } = await context . client . get < { users : User [ ] } > (
47
+ 'v1/user' ,
48
+ session . get ( 'api_key' ) ! ,
49
+ ) ;
44
50
45
- if ( users . length === 0 ) {
46
- onboarded = false ;
47
- }
51
+ if ( users . length === 0 ) {
52
+ onboarded = false ;
53
+ }
48
54
49
- const user = users . find ( ( u ) => {
50
- if ( u . provider !== 'oidc' ) {
51
- return false ;
52
- }
55
+ const user = users . find ( ( u ) => {
56
+ if ( u . provider !== 'oidc' ) {
57
+ return false ;
58
+ }
53
59
54
- // For some reason, headscale makes providerID a url where the
55
- // last component is the subject, so we need to strip that out
56
- const subject = u . providerId ?. split ( '/' ) . pop ( ) ;
57
- if ( ! subject ) {
58
- return false ;
59
- }
60
+ // For some reason, headscale makes providerID a url where the
61
+ // last component is the subject, so we need to strip that out
62
+ const subject = u . providerId ?. split ( '/' ) . pop ( ) ;
63
+ if ( ! subject ) {
64
+ return false ;
65
+ }
60
66
61
- const sessionUser = session . get ( 'user' ) ;
62
- if ( ! sessionUser ) {
63
- return false ;
64
- }
67
+ const sessionUser = session . get ( 'user' ) ;
68
+ if ( ! sessionUser ) {
69
+ return false ;
70
+ }
65
71
66
- if ( context . sessions . onboardForSubject ( sessionUser . subject ) ) {
67
- // Assume onboarded
68
- return true ;
69
- }
72
+ if ( context . sessions . onboardForSubject ( sessionUser . subject ) ) {
73
+ // Assume onboarded
74
+ return true ;
75
+ }
70
76
71
- return subject === sessionUser . subject ;
72
- } ) ;
77
+ return subject === sessionUser . subject ;
78
+ } ) ;
73
79
74
- if ( user ) {
75
- onboarded = true ;
80
+ if ( user ) {
81
+ onboarded = true ;
82
+ }
83
+ } catch ( e ) {
84
+ // If we cannot lookup users, just assume our user is onboarded
85
+ log . debug ( 'api' , 'Failed to lookup users %o' , e ) ;
86
+ onboarded = true ;
87
+ }
76
88
}
77
- } catch ( e ) {
78
- // If we cannot lookup users, just assume our user is onboarded
79
- log . debug ( 'api' , 'Failed to lookup users %o' , e ) ;
80
- onboarded = true ;
81
89
}
82
90
83
91
if ( ! onboarded ) {
0 commit comments