Stripe Pricing + Subscriptions

This commit is contained in:
2024-08-21 21:13:43 +02:00
parent 48bff89526
commit b4609d07ba
16 changed files with 969 additions and 1035 deletions

View File

@@ -0,0 +1,38 @@
import { CommonModule } from '@angular/common';
import { Component } from '@angular/core';
import { ActivatedRoute, Router, RouterModule } from '@angular/router';
import { KeycloakService } from 'keycloak-angular';
import { lastValueFrom } from 'rxjs';
import { SubscriptionsService } from '../../services/subscriptions.service';
import { UserService } from '../../services/user.service';
import { map2User } from '../../utils/utils';
@Component({
selector: 'app-login',
standalone: true,
imports: [CommonModule, RouterModule],
template: ``,
})
export class LoginComponent {
page: string | undefined = this.activatedRoute.snapshot.params['page'] as string | undefined;
constructor(public userService: UserService, private activatedRoute: ActivatedRoute, private keycloakService: KeycloakService, private router: Router, private subscriptionService: SubscriptionsService) {}
async ngOnInit() {
const token = await this.keycloakService.getToken();
const keycloakUser = map2User(token);
const email = keycloakUser.email;
const user = await this.userService.getByMail(email);
if (!user.subscriptionPlan) {
//this.router.navigate(['/pricing']);
const subscriptions = await lastValueFrom(this.subscriptionService.getAllSubscriptions(user.email));
const activeSubscription = subscriptions.filter(s => s.status === 'active');
if (activeSubscription.length > 0) {
user.subscriptionPlan = activeSubscription[0].metadata['plan'] === 'Broker Plan' ? 'broker' : 'professional';
this.userService.save(user);
} else {
this.router.navigate([`/pricing`]);
return;
}
}
this.router.navigate([`/${this.page}`]);
}
}