From 18dfde7bef08426687baecb1149b8aca3ea64f0a Mon Sep 17 00:00:00 2001 From: Yudi <12040397+Yudi@users.noreply.github.com> Date: Thu, 23 May 2024 19:09:15 -0300 Subject: [PATCH] wip --- bun.lockb | Bin 691456 -> 694712 bytes package.json | 1 + src/app/app.routes.ts | 12 +- .../google-button.component.html | 68 +----- .../google-button/google-button.component.ts | 50 ++-- .../development-tools.routes.ts | 5 + .../supabase-tools/supabase-tools.page.html | 48 ++++ .../supabase-tools/supabase-tools.page.scss | 0 .../supabase-tools.page.spec.ts | 17 ++ .../supabase-tools/supabase-tools.page.ts | 55 +++++ src/app/profile/profile-info.page.html | 4 +- src/app/profile/profile-info.page.ts | 67 +++--- .../restricted-area/restricted-area.routes.ts | 6 +- src/app/shared/guards/supabase.guard.spec.ts | 17 ++ src/app/shared/guards/supabase.guard.ts | 10 + .../shared/services/routing/guards.service.ts | 70 +++--- .../shared/services/supabase-auth.service.ts | 213 ++++++++++++++++++ src/app/shared/services/supabase.service.ts | 14 ++ src/app/tabs/menu/menu.page.html | 18 +- src/app/tabs/menu/menu.page.ts | 21 +- src/app/tabs/tabs.routes.ts | 5 +- src/environments/environment.prod.ts | 7 + src/environments/environment.ts | 7 + 23 files changed, 531 insertions(+), 184 deletions(-) create mode 100644 src/app/development-tools/supabase-tools/supabase-tools.page.html create mode 100644 src/app/development-tools/supabase-tools/supabase-tools.page.scss create mode 100644 src/app/development-tools/supabase-tools/supabase-tools.page.spec.ts create mode 100644 src/app/development-tools/supabase-tools/supabase-tools.page.ts create mode 100644 src/app/shared/guards/supabase.guard.spec.ts create mode 100644 src/app/shared/guards/supabase.guard.ts create mode 100644 src/app/shared/services/supabase-auth.service.ts create mode 100644 src/app/shared/services/supabase.service.ts diff --git a/bun.lockb b/bun.lockb index 44514cd5d5e090c46708f0cab6ffd3bda20d0074..228ad7b39b4170d3e7cf9795445469f853a46ad7 100755 GIT binary patch delta 139462 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 Af&c&j delta 138073 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 jowlu#Ow?L8NS~S#FY5RYB9*jDH(KMQ^m!`=7(u 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 diff --git a/package.json b/package.json index 22d61ac8..891f7987 100644 --- a/package.json +++ b/package.json @@ -26,6 +26,7 @@ "@ionic/angular": "^8.2.0", "@ngneat/until-destroy": "^10.0.0", "@pdfme/generator": "^4.0.1", + "@supabase/supabase-js": "^2.43.4", "@sweetalert2/ngx-sweetalert2": "^12.3.0", "buffer": "^6.0.3", "bwip-js": "^4.3.2", diff --git a/src/app/app.routes.ts b/src/app/app.routes.ts index 0b6737e0..4c1e93b4 100644 --- a/src/app/app.routes.ts +++ b/src/app/app.routes.ts @@ -79,38 +79,38 @@ export const routes: Routes = [ path: 'login', title: 'Entrar', loadComponent: () => import('src/app/auth/login/login.page').then((m) => m.LoginPage), - ...canActivate(redirectLoggedInToMenu), + canActivate: [redirectLoggedInToMenu], }, { path: 'register', title: 'Registrar-se', loadComponent: () => import('src/app/auth/register/register.page').then((m) => m.RegisterPage), - ...canActivate(redirectUnauthorizedToLogin), + canActivate: [redirectUnauthorizedToLogin], }, { path: 'perfil', title: 'Perfil', data: { preload: true }, loadChildren: () => import('src/app/profile/profile-info.routes').then((m) => m.routes), - ...canActivate(redirectUnauthorizedToLogin), + canActivate: [redirectUnauthorizedToLogin], }, { path: 'eventos/inscrever/:eventID', title: 'Inscrição', loadChildren: () => import('src/app/tabs/major-events-display/subscribe/subscribe.routes').then((m) => m.routes), - ...canActivate(redirectUnauthorizedToLogin), + canActivate: [redirectUnauthorizedToLogin], }, { path: 'inscricoes', title: 'Minhas participações', loadChildren: () => import('src/app/profile/my-attendances/my-attendances.routes').then((m) => m.routes), - ...canActivate(redirectUnauthorizedToLogin), + canActivate: [redirectUnauthorizedToLogin], }, { path: 'confirmar-presenca/:eventID', title: 'Confirmar presença', loadChildren: () => import('src/app/modals/confirm-attendance/confirm-attendance.routes').then((m) => m.routes), - ...canActivate(redirectUnauthorizedToLogin), + canActivate: [redirectUnauthorizedToLogin], }, { path: 'certificado/verificar/:param', diff --git a/src/app/auth/login/components/google-button/google-button.component.html b/src/app/auth/login/components/google-button/google-button.component.html index 7db0c49f..1d54136a 100644 --- a/src/app/auth/login/components/google-button/google-button.component.html +++ b/src/app/auth/login/components/google-button/google-button.component.html @@ -1,69 +1,5 @@
- @if (!environment.firebase.useEmulators) { - - @if (!isLoaded()) { - - - - } + -
- } @else { - - - - - - - - - - - - - - - - - - - - - - - - Entrar com o Emulador - - - - - } +
diff --git a/src/app/auth/login/components/google-button/google-button.component.ts b/src/app/auth/login/components/google-button/google-button.component.ts index 58d9bf75..61219f9a 100644 --- a/src/app/auth/login/components/google-button/google-button.component.ts +++ b/src/app/auth/login/components/google-button/google-button.component.ts @@ -1,9 +1,11 @@ import { AfterViewInit, Component, ElementRef, OnInit, ViewChild, WritableSignal, signal } from '@angular/core'; -import { AuthService } from 'src/app/shared/services/auth.service'; import { CredentialResponse } from 'google-one-tap'; import { environment } from 'src/environments/environment'; import { IonSpinner, IonButton, IonSkeletonText } from '@ionic/angular/standalone'; import { CommonModule } from '@angular/common'; +import { SupabaseAuthService } from 'src/app/shared/services/supabase-auth.service'; +import { take } from 'rxjs'; +import { ActivatedRoute, Router } from '@angular/router'; @Component({ selector: 'app-google-button', @@ -19,34 +21,32 @@ export class GoogleButtonComponent implements AfterViewInit { public isLoaded: WritableSignal = signal(false); - constructor(public authService: AuthService) {} + constructor(public authService: SupabaseAuthService) {} handleCredentialResponse(response: CredentialResponse) { - this.authService.GoogleOneTap(response); + this.authService.GoogleOneTapSignIn(response); } ngAfterViewInit() { - if (environment.production) { - //@ts-ignore - google.accounts.id.initialize({ - // Ref: https://developers.google.com/identity/gsi/web/reference/js-reference#IdConfiguration - client_id: '169157391934-n61n94q5pdv1uloqnejher4v9fudd9g7.apps.googleusercontent.com', - callback: this.handleCredentialResponse.bind(this), - auto_select: true, - cancel_on_tap_outside: false, - }); - - //@ts-ignore - google.accounts.id.renderButton(this.googleButton.nativeElement, { - theme: 'outline', - size: 'large', - shape: 'rectangular', - type: 'standard', - logo_alignment: 'left', - width: 300, - }); - - this.isLoaded.set(true); - } + //@ts-ignore + google.accounts.id.initialize({ + // Ref: https://developers.google.com/identity/gsi/web/reference/js-reference#IdConfiguration + client_id: '169157391934-vff3m8m24armjnojmn611iv3tbapbsrn.apps.googleusercontent.com', + callback: this.handleCredentialResponse.bind(this), + auto_select: true, + cancel_on_tap_outside: false, + }); + + this.isLoaded.set(true); + + //@ts-ignore + google.accounts.id.renderButton(this.googleButton.nativeElement, { + theme: 'outline', + size: 'large', + shape: 'rectangular', + type: 'standard', + logo_alignment: 'left', + width: 300, + }); } } diff --git a/src/app/development-tools/development-tools.routes.ts b/src/app/development-tools/development-tools.routes.ts index b64b165c..4e7dadae 100644 --- a/src/app/development-tools/development-tools.routes.ts +++ b/src/app/development-tools/development-tools.routes.ts @@ -1,6 +1,7 @@ import { Routes } from '@angular/router'; import { DevelopmentToolsPage } from './development-tools.page'; +import { SupabaseToolsPage } from 'src/app/development-tools/supabase-tools/supabase-tools.page'; export const routes: Routes = [ { @@ -11,4 +12,8 @@ export const routes: Routes = [ path: 'populate-db', loadChildren: () => import('./populate-database/populate-database.routes').then((m) => m.routes), }, + { + path: 'supabase-tools', + loadComponent: () => import('./supabase-tools/supabase-tools.page').then((m) => m.SupabaseToolsPage), + }, ]; diff --git a/src/app/development-tools/supabase-tools/supabase-tools.page.html b/src/app/development-tools/supabase-tools/supabase-tools.page.html new file mode 100644 index 00000000..2f5cebaf --- /dev/null +++ b/src/app/development-tools/supabase-tools/supabase-tools.page.html @@ -0,0 +1,48 @@ + + + + + + Supabase + + + + + + + Subapase + + + + + + + + + + + + + + Entrar com e-mail + + + + + Sair + +
+

isLoggedIn: {{supabaseAuth.isLoggedIn()}}

+

User data:

+ @if (supabaseAuth.$user | async; as user) { +
{{ user | json }}
+ } +

DB data:

+ @if (supabaseAuth.$profile | async; as profile) { +
{{ profile | json }}
+ } @else { + Empty or not logged in + } +
+
+
diff --git a/src/app/development-tools/supabase-tools/supabase-tools.page.scss b/src/app/development-tools/supabase-tools/supabase-tools.page.scss new file mode 100644 index 00000000..e69de29b diff --git a/src/app/development-tools/supabase-tools/supabase-tools.page.spec.ts b/src/app/development-tools/supabase-tools/supabase-tools.page.spec.ts new file mode 100644 index 00000000..216b0649 --- /dev/null +++ b/src/app/development-tools/supabase-tools/supabase-tools.page.spec.ts @@ -0,0 +1,17 @@ +import { ComponentFixture, TestBed } from '@angular/core/testing'; +import { SupabaseToolsPage } from './supabase-tools.page'; + +describe('SupabaseToolsPage', () => { + let component: SupabaseToolsPage; + let fixture: ComponentFixture; + + beforeEach(() => { + fixture = TestBed.createComponent(SupabaseToolsPage); + component = fixture.componentInstance; + fixture.detectChanges(); + }); + + it('should create', () => { + expect(component).toBeTruthy(); + }); +}); diff --git a/src/app/development-tools/supabase-tools/supabase-tools.page.ts b/src/app/development-tools/supabase-tools/supabase-tools.page.ts new file mode 100644 index 00000000..24d9feb1 --- /dev/null +++ b/src/app/development-tools/supabase-tools/supabase-tools.page.ts @@ -0,0 +1,55 @@ +import { Component, OnInit } from '@angular/core'; +import { CommonModule } from '@angular/common'; +import { FormsModule } from '@angular/forms'; +import { + IonContent, + IonHeader, + IonTitle, + IonToolbar, + IonButtons, + IonBackButton, + IonCard, + IonInput, + IonItem, + IonButton, + IonIcon, +} from '@ionic/angular/standalone'; +import { SupabaseAuthService } from 'src/app/shared/services/supabase-auth.service'; + +@Component({ + selector: 'app-supabase-tools', + templateUrl: './supabase-tools.page.html', + styleUrls: ['./supabase-tools.page.scss'], + standalone: true, + imports: [ + IonIcon, + IonButton, + IonItem, + IonInput, + IonCard, + IonContent, + IonHeader, + IonTitle, + IonToolbar, + IonButtons, + IonBackButton, + CommonModule, + FormsModule, + ], +}) +export class SupabaseToolsPage implements OnInit { + emailInput: string = ''; + passwordInput: string = ''; + + constructor(public supabaseAuth: SupabaseAuthService) {} + + login(): void { + this.supabaseAuth.signIn(this.emailInput, this.passwordInput); + } + + logout(): void { + this.supabaseAuth.signOut(); + } + + ngOnInit() {} +} diff --git a/src/app/profile/profile-info.page.html b/src/app/profile/profile-info.page.html index aebaedd4..be2831be 100644 --- a/src/app/profile/profile-info.page.html +++ b/src/app/profile/profile-info.page.html @@ -29,7 +29,7 @@ Informações pessoais - @if (isUnesp && !alreadyLinked) { + diff --git a/src/app/profile/profile-info.page.ts b/src/app/profile/profile-info.page.ts index 462df242..d21fcf06 100644 --- a/src/app/profile/profile-info.page.ts +++ b/src/app/profile/profile-info.page.ts @@ -1,9 +1,6 @@ -import { AngularFirestore } from '@angular/fire/compat/firestore'; -import { Component, inject, OnInit } from '@angular/core'; -import { Auth, authState } from '@angular/fire/auth'; +import { Component, inject, OnInit, signal, WritableSignal } from '@angular/core'; import { Router } from '@angular/router'; -import { User } from 'src/app/shared/services/user'; import { AsyncPipe } from '@angular/common'; import { @@ -29,7 +26,8 @@ import { import { RouterLink } from '@angular/router'; import { Mailto, MailtoService } from 'src/app/shared/services/mailto.service'; -import { AuthService } from 'src/app/shared/services/auth.service'; +import { SupabaseAuthService } from 'src/app/shared/services/supabase-auth.service'; +import { User } from '@supabase/supabase-js'; @Component({ selector: 'app-profile-info', @@ -60,55 +58,54 @@ import { AuthService } from 'src/app/shared/services/auth.service'; ], }) export class ProfileInfoPage implements OnInit { - private auth: Auth = inject(Auth); - authState$ = authState(this.auth); + private auth = inject(SupabaseAuthService); constructor( - public authService: AuthService, - private afs: AngularFirestore, private mailtoService: MailtoService, private router: Router, ) {} alreadyLinked: boolean = false; isUnesp: boolean = false; - userData: User; + userData: WritableSignal = signal(null); ngOnInit() { - this.authState$.subscribe((user) => { + this.auth.$user.subscribe((user) => { if (user) { - this.afs - .collection('users') - .doc(this.authService.userData.uid) - .get() - .subscribe((doc) => { - this.userData = doc.data(); - if (this.userData.linkedPersonalEmail) { - this.alreadyLinked = true; - } - if (this.userData.email.includes('@unesp.br')) { - this.isUnesp = true; - } - }); + this.userData.set(user); + + // this.afs + // .collection('users') + // .doc(this.authService.userData.uid) + // .get() + // .subscribe((doc) => { + // this.userData = doc.data(); + // if (this.userData.linkedPersonalEmail) { + // this.alreadyLinked = true; + // } + // if (this.userData.email.includes('@unesp.br')) { + // this.isUnesp = true; + // } + // }); } }); } mailtoDeleteAccount(): void { - const mailto: Mailto = { - receiver: 'cacic.fct@gmail.com', - subject: '[FCT-App] Excluir meu cadastro', - body: `Olá!\nEu gostaria que a minha conta fosse excluída.\n\n=== Não apague os dados abaixo ===\nE-mail: ${ - this.userData.email - }\nCelular: ${this.userData.phone}\n${ - this.isUnesp ? ('Vinculou e-mail pessoal:' + this.alreadyLinked ? 'Sim' : 'Não' + '\n') : '' - }`, - }; - this.mailtoService.open(mailto); + // const mailto: Mailto = { + // receiver: 'cacic.fct@gmail.com', + // subject: '[FCT-App] Excluir meu cadastro', + // body: `Olá!\nEu gostaria que a minha conta fosse excluída.\n\n=== Não apague os dados abaixo ===\nE-mail: ${ + // this.userData.email + // }\nCelular: ${this.userData.phone}\n${ + // this.isUnesp ? ('Vinculou e-mail pessoal:' + this.alreadyLinked ? 'Sim' : 'Não' + '\n') : '' + // }`, + // }; + // this.mailtoService.open(mailto); } logout() { - this.authService.SignOut(); + this.auth.signOut(); this.router.navigate(['/login']); } diff --git a/src/app/restricted-area/restricted-area.routes.ts b/src/app/restricted-area/restricted-area.routes.ts index 8050a889..0cf371ce 100644 --- a/src/app/restricted-area/restricted-area.routes.ts +++ b/src/app/restricted-area/restricted-area.routes.ts @@ -1,9 +1,7 @@ -// @ts-strict-ignore import { Routes, RouterModule } from '@angular/router'; import { RestrictedAreaPage } from './restricted-area.page'; -import { canActivate } from '@angular/fire/compat/auth-guard'; import { adminOnly } from '../shared/services/routing/guards.service'; export const routes: Routes = [ @@ -15,13 +13,13 @@ export const routes: Routes = [ path: 'gerenciar-admins', title: 'Gerenciar admins', loadChildren: () => import('src/app/restricted-area/manage-admins/manage-admins.routes').then((m) => m.routes), - ...canActivate(adminOnly), + canActivate: [adminOnly], }, { path: 'gerenciar-grandes-eventos', title: 'Gerenciar grandes eventos', loadChildren: () => import('./manage-major-events/manage-major-events.routes').then((m) => m.routes), - ...canActivate(adminOnly), + canActivate: [adminOnly], }, { path: 'gerenciar-eventos', diff --git a/src/app/shared/guards/supabase.guard.spec.ts b/src/app/shared/guards/supabase.guard.spec.ts new file mode 100644 index 00000000..52c40649 --- /dev/null +++ b/src/app/shared/guards/supabase.guard.spec.ts @@ -0,0 +1,17 @@ +import { TestBed } from '@angular/core/testing'; +import { CanActivateFn } from '@angular/router'; + +import { supabaseGuard } from './supabase.guard'; + +describe('supabaseGuard', () => { + const executeGuard: CanActivateFn = (...guardParameters) => + TestBed.runInInjectionContext(() => supabaseGuard(...guardParameters)); + + beforeEach(() => { + TestBed.configureTestingModule({}); + }); + + it('should be created', () => { + expect(executeGuard).toBeTruthy(); + }); +}); diff --git a/src/app/shared/guards/supabase.guard.ts b/src/app/shared/guards/supabase.guard.ts new file mode 100644 index 00000000..f0800f39 --- /dev/null +++ b/src/app/shared/guards/supabase.guard.ts @@ -0,0 +1,10 @@ +import { CanActivateFn } from '@angular/router'; +import { SupabaseAuthService } from 'src/app/shared/services/supabase-auth.service'; + +export const supabaseGuard: CanActivateFn = (route, state) => { + if (!SupabaseAuthService.$user) { + return false; + } + + return true; +}; diff --git a/src/app/shared/services/routing/guards.service.ts b/src/app/shared/services/routing/guards.service.ts index f17e9099..ab149cd2 100644 --- a/src/app/shared/services/routing/guards.service.ts +++ b/src/app/shared/services/routing/guards.service.ts @@ -1,36 +1,50 @@ -import { Injectable } from '@angular/core'; -import { ActivatedRouteSnapshot, RouterStateSnapshot } from '@angular/router'; +import { Injectable, inject } from '@angular/core'; +import { ActivatedRouteSnapshot, CanActivateFn, Router, RouterStateSnapshot, UrlTree } from '@angular/router'; import { environment } from 'src/environments/environment'; -import { redirectUnauthorizedTo, redirectLoggedInTo, customClaims } from '@angular/fire/compat/auth-guard'; -import { pipe } from 'rxjs'; -import { map } from 'rxjs/operators'; +import { Observable, pipe } from 'rxjs'; +import { filter, map, take } from 'rxjs/operators'; +import { SupabaseAuthService } from 'src/app/shared/services/supabase-auth.service'; +import { filterNullish } from 'src/app/shared/services/rxjs.service'; -@Injectable({ - providedIn: 'root', -}) -export class DevelopmentOnlyGuard { - canActivate(_route: ActivatedRouteSnapshot, _state: RouterStateSnapshot): boolean { - return !environment.production; - } -} - -// Attribution: waternova -// https://stackoverflow.com/questions/64456664/angularfireauthguard-redirecturl-after-login -export const redirectUnauthorizedToLogin = (_next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => { - return redirectUnauthorizedTo(`/login?redirect=${state.url}`); +export const DevelopmentOnlyGuard: CanActivateFn = (next: ActivatedRouteSnapshot, state: RouterStateSnapshot) => { + return !environment.production; }; -export const redirectLoggedInToMenu = () => redirectLoggedInTo(['menu']); - -export const caAndGreater = () => - pipe( - customClaims, - map((claims: { [key: string]: any }) => (claims['role'] as number) < 3000) +export const redirectUnauthorizedToLogin: CanActivateFn = (route, state) => { + const auth = inject(SupabaseAuthService); + const router = inject(Router); + return auth.$user.pipe( + take(1), // Otherwise the Observable doesn't complete! + map((isAuthenticated) => { + if (isAuthenticated) { + return true; + } else { + return router.createUrlTree(['/login'], { + queryParams: { redirect: state.url }, + }); + } + }), ); +}; -export const adminOnly = () => - pipe( - customClaims, - map((claims: { [key: string]: any }) => (claims['role'] as number) === 1000) +export const redirectLoggedInToMenu: CanActivateFn = (route, state) => { + const auth = inject(SupabaseAuthService); + const router = inject(Router); + return auth.$user.pipe( + take(1), // Otherwise the Observable doesn't complete! + map((isAuthenticated) => { + if (isAuthenticated) { + return router.createUrlTree(['/menu']); + } else { + return true; + } + }), ); +}; + +export class adminOnly { + canActivate(route: ActivatedRouteSnapshot): boolean { + return true; + } +} diff --git a/src/app/shared/services/supabase-auth.service.ts b/src/app/shared/services/supabase-auth.service.ts new file mode 100644 index 00000000..2e4dae6f --- /dev/null +++ b/src/app/shared/services/supabase-auth.service.ts @@ -0,0 +1,213 @@ +// Attribution: kylerummens +// https://gist.github.com/kylerummens/c2ec82e65d137f3220748ff0dee76c3f +import { Injectable, WritableSignal, signal } from '@angular/core'; +import { takeUntilDestroyed } from '@angular/core/rxjs-interop'; +import { user } from '@angular/fire/auth'; +import { ActivatedRoute, Router } from '@angular/router'; +import { AuthError, AuthTokenResponse, OAuthResponse, RealtimeChannel, Session, User } from '@supabase/supabase-js'; +import { CredentialResponse } from 'google-one-tap'; +import { BehaviorSubject, Observable, first, skipWhile, take } from 'rxjs'; +import { SupabaseService } from 'src/app/shared/services/supabase.service'; + +export interface Profile { + user_id: string; + photo_url: string; + email: string; + first_name: string; + last_name: string; +} + +@Injectable({ + providedIn: 'root', +}) +export class SupabaseAuthService { + // Supabase user state + private _$user = new BehaviorSubject(undefined); + public $user = this._$user.pipe(skipWhile((x) => typeof x === 'undefined')) as Observable; + private user_id: WritableSignal = signal(undefined); + public isLoggedIn: WritableSignal = signal(undefined); + + // Profile state + private _$profile = new BehaviorSubject(undefined); + $profile = this._$profile.pipe(skipWhile((x) => typeof x === 'undefined')) as Observable; + private profile_subscription: RealtimeChannel | null = null; + + constructor( + private supabase: SupabaseService, + private route: ActivatedRoute, + private router: Router, + ) { + this.supabase.client.auth.getUser().then(({ data, error }) => { + this._$user.next(data?.user && !error ? data.user : null); + + // After the initial value is set, listen for auth state changes + this.supabase.client.auth.onAuthStateChange((event, session) => { + console.log('Auth State Changed:', event, session); + this._$user.next(session?.user ?? null); + }); + }); + + // Initialize the user's profile + // The state of the user's profile is dependent on them being a user. If no user is set, there shouldn't be a profile. + this.$user.pipe(takeUntilDestroyed()).subscribe((user) => { + if (user) { + this.isLoggedIn.set(true); + // We only make changes if the user is different + if (user.id === this.user_id()) { + return; + } + + const user_id = user.id; + this.user_id.set(user_id); + + // One-time API call to Supabase to get the user's profile + this.supabase.client + .from('users') + .select('*') + .match({ user_id }) + .single() + .then((res) => { + // Update our profile BehaviorSubject with the current value + this._$profile.next(res.data ?? null); + + // Listen to any changes to our user's profile using Supabase Realtime + this.profile_subscription = this.supabase.client + .channel('public:profiles') + .on( + 'postgres_changes', + { + event: '*', + schema: 'public', + table: 'users', + filter: 'user_id=eq.' + user.id, + }, + (payload: any) => { + // Update our profile BehaviorSubject with the newest value + this._$profile.next(payload.new); + }, + ) + .subscribe(); + }); + } else { + // If there is no user, update the profile BehaviorSubject, delete the user_id, and unsubscribe from Supabase Realtime + this._$profile.next(null); + this.isLoggedIn.set(false); + this.user_id.set(undefined); + if (this.profile_subscription) { + this.supabase.client.removeChannel(this.profile_subscription).then((res) => { + console.log('Removed profile channel subscription with status: ', res); + }); + } + } + }); + } + + signIn(email: string, password: string) { + return new Promise((resolve, reject) => { + // Set _$profile back to undefined. This will mean that $profile will wait to emit a value + this._$profile.next(undefined); + this.supabase.client.auth.signInWithPassword({ email, password }).then(({ data, error }) => { + if (error || !data) { + reject(error); + } + + // Wait for $profile to be set again. + // We don't want to proceed until our API request for the user's profile has completed + this.$profile.pipe(first()).subscribe(() => { + this.isLoggedIn.set(true); + resolve(); + }); + }); + }); + } + + GoogleOneTapSignIn(token: CredentialResponse) { + this._$profile.next(undefined); + + this.supabase.client.auth + .signInWithIdToken({ + provider: 'google', + token: token.credential, + }) + .then(({ data, error }: { data: { user: User | null; session: Session | null }; error: AuthError | null }) => { + if (error || !data) { + throw error; + } + + this.saveUserData(data); + this.isLoggedIn.set(true); + + this.route.queryParams.pipe(take(1)).subscribe((params) => { + const redirect = params['redirect']; + if (redirect) { + this.router.navigate([redirect]); + } else { + this.router.navigate(['menu']); + } + }); + }); + } + + saveUserData(data: { user: User | null; session: Session | null }) { + const user = data.user; + + if (!user) { + throw new Error('User not found'); + } + + this.supabase.client + .from('users') + .select('*') + .match({ id: user.id }) + .single() + .then((res) => { + if (res.data) { + this.supabase.client + .from('users') + .upsert({ + name: user.user_metadata['full_name'], + email: user.email, + avatar_url: user.user_metadata['picture'], + }) + .select(); + + return; + } else { + this.router.navigate(['register']); + } + }); + + console.log('Saved user data'); + } + + /* async signInWithGoogle() { + return new Promise((resolve, reject) => { + this._$profile.next(undefined); + + return this.supabase.client.auth + .signInWithOAuth({ + provider: 'google', + options: { + redirectTo: 'https://localhost:8100/login', + }, + }) + .then(({ data, error }: { data: any; error: any }) => { + if (error || !data) { + reject(error); + } + + + + this.$profile.pipe(first()).subscribe(() => { + this.isLoggedIn.set(true); + resolve(data); + }); + }); + }); + } */ + + signOut() { + this.isLoggedIn.set(false); + return this.supabase.client.auth.signOut(); + } +} diff --git a/src/app/shared/services/supabase.service.ts b/src/app/shared/services/supabase.service.ts new file mode 100644 index 00000000..206ff7eb --- /dev/null +++ b/src/app/shared/services/supabase.service.ts @@ -0,0 +1,14 @@ +import { Injectable } from '@angular/core'; +import { createClient, SupabaseClient } from '@supabase/supabase-js'; +import { environment } from 'src/environments/environment'; + +@Injectable({ + providedIn: 'root', +}) +export class SupabaseService { + public client: SupabaseClient; + + constructor() { + this.client = createClient(environment.supabase.url, environment.supabase.anonKey); + } +} diff --git a/src/app/tabs/menu/menu.page.html b/src/app/tabs/menu/menu.page.html index 353d8b50..c389542f 100644 --- a/src/app/tabs/menu/menu.page.html +++ b/src/app/tabs/menu/menu.page.html @@ -12,9 +12,11 @@ - + -

{{userData().displayName}}

+ +

{{userData().user_metadata['name']}}

+
@@ -107,5 +109,17 @@

Entrar

} + + + + + + + + Supabase + + + + diff --git a/src/app/tabs/menu/menu.page.ts b/src/app/tabs/menu/menu.page.ts index f3560c95..ded407b5 100644 --- a/src/app/tabs/menu/menu.page.ts +++ b/src/app/tabs/menu/menu.page.ts @@ -1,13 +1,8 @@ import { Component, inject, signal, WritableSignal } from '@angular/core'; -import { AuthService } from '../../shared/services/auth.service'; - -import { trace } from '@angular/fire/compat/performance'; - import { UntilDestroy, untilDestroyed } from '@ngneat/until-destroy'; import { environment } from 'src/environments/environment'; -import { Auth, authState, user, User } from '@angular/fire/auth'; import { AsyncPipe } from '@angular/common'; import { @@ -29,6 +24,9 @@ import { } from '@ionic/angular/standalone'; import { RouterLink } from '@angular/router'; import { ClickStopPropagation } from 'src/app/shared/directives/click-stop-propagation'; +import { SupabaseAuthService } from 'src/app/shared/services/supabase-auth.service'; +import { Observable } from 'rxjs'; +import { User } from '@supabase/supabase-js'; @UntilDestroy() @Component({ @@ -58,20 +56,17 @@ import { ClickStopPropagation } from 'src/app/shared/directives/click-stop-propa ], }) export class MenuPage { - private auth: Auth = inject(Auth); - user$ = user(this.auth); - authState$ = authState(this.auth); + private auth = inject(SupabaseAuthService); + + user$: Observable = this.auth.$user; isProduction: boolean = environment.production; userData: WritableSignal = signal(null); - firstName: WritableSignal = signal(null); - lastName: WritableSignal = signal(null); - fullNameAbbreviation: WritableSignal = signal(null); - constructor(public authService: AuthService) {} + constructor() {} ngOnInit() { - this.user$.pipe(untilDestroyed(this), trace('auth')).subscribe((user) => { + this.user$.pipe(untilDestroyed(this)).subscribe((user) => { if (user) { this.userData.set(user); } else { diff --git a/src/app/tabs/tabs.routes.ts b/src/app/tabs/tabs.routes.ts index ac37ed3c..c08d465a 100644 --- a/src/app/tabs/tabs.routes.ts +++ b/src/app/tabs/tabs.routes.ts @@ -1,8 +1,7 @@ import { Routes } from '@angular/router'; import { TabsPage } from './tabs.page'; -import { canActivate } from '@angular/fire/compat/auth-guard'; -import { caAndGreater } from '../shared/services/routing/guards.service'; +import { adminOnly } from '../shared/services/routing/guards.service'; export const routes: Routes = [ { @@ -34,7 +33,7 @@ export const routes: Routes = [ path: 'area-restrita', title: 'Ferramentas administrativas', loadChildren: () => import('src/app/restricted-area/restricted-area.routes').then((m) => m.routes), - ...canActivate(caAndGreater), + canActivate: [adminOnly], }, { path: '', diff --git a/src/environments/environment.prod.ts b/src/environments/environment.prod.ts index 3e8cb3b9..a2eb2c7f 100644 --- a/src/environments/environment.prod.ts +++ b/src/environments/environment.prod.ts @@ -12,6 +12,13 @@ export const environment = { useEmulators: false, }, recaptcha3SiteKey: '6LcFr9AdAAAAANB7MbCks-nBVqfZZYp8bGp6Kcto', + + supabase: { + url: 'https://supabase.yudi.me', + anonKey: + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogImFub24iLAogICJpc3MiOiAic3VwYWJhc2UiLAogICJpYXQiOiAxNzEyNzE4MDAwLAogICJleHAiOiAxODcwNDg0NDAwCn0.uw1mpsYyrLzPnDfs4xjVNcwurDoS6Y9u8gZggSqmRDo', + }, + // Also change OGP image in index.html baseUrl: 'https://fctapp.yudi.me/', }; diff --git a/src/environments/environment.ts b/src/environments/environment.ts index 0c1ce6a6..004dcb6f 100644 --- a/src/environments/environment.ts +++ b/src/environments/environment.ts @@ -16,6 +16,13 @@ export const environment = { useEmulators: true, }, recaptcha3SiteKey: '6LcFr9AdAAAAANB7MbCks-nBVqfZZYp8bGp6Kcto', + + supabase: { + url: 'https://supabase.yudi.me', + anonKey: + 'eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.ewogICJyb2xlIjogImFub24iLAogICJpc3MiOiAic3VwYWJhc2UiLAogICJpYXQiOiAxNzEyNzE4MDAwLAogICJleHAiOiAxODcwNDg0NDAwCn0.uw1mpsYyrLzPnDfs4xjVNcwurDoS6Y9u8gZggSqmRDo', + }, + baseUrl: 'https://localhost:8100/', };