@mckit/auth 18.0.2 → 18.0.4

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -0,0 +1,6 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export const MC_AUTH_CONFIG = new InjectionToken('mc.auth');
3
+ export class MCAuthConfig {
4
+ baseUrl = '';
5
+ }
6
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWMtYXV0aC1jb25maWcuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tY2tpdC9hdXRoL3NyYy9saWIvZW50aXRpZXMvbWMtYXV0aC1jb25maWcudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUUvQyxNQUFNLENBQUMsTUFBTSxjQUFjLEdBQUcsSUFBSSxjQUFjLENBQWUsU0FBUyxDQUFDLENBQUM7QUFFMUUsTUFBTSxPQUFPLFlBQVk7SUFDdkIsT0FBTyxHQUFXLEVBQUUsQ0FBQztDQUN0QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGlvblRva2VuIH0gZnJvbSBcIkBhbmd1bGFyL2NvcmVcIjtcblxuZXhwb3J0IGNvbnN0IE1DX0FVVEhfQ09ORklHID0gbmV3IEluamVjdGlvblRva2VuPE1DQXV0aENvbmZpZz4oJ21jLmF1dGgnKTtcblxuZXhwb3J0IGNsYXNzIE1DQXV0aENvbmZpZyB7XG4gIGJhc2VVcmw6IHN0cmluZyA9ICcnO1xufVxuIl19
@@ -0,0 +1,16 @@
1
+ export class MCUser {
2
+ static STATUS_INACTIVE = 0;
3
+ static STATUS_ACTIVE = 1;
4
+ static STATUS_SUSPENDED = 2;
5
+ id;
6
+ firstname = '';
7
+ lastname = '';
8
+ email = '';
9
+ photo = '';
10
+ role = 0;
11
+ status = 0;
12
+ created_at = '';
13
+ token_type = 'bearer';
14
+ access_token = '';
15
+ }
16
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibWMtdXNlci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21ja2l0L2F1dGgvc3JjL2xpYi9lbnRpdGllcy9tYy11c2VyLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE1BQU0sT0FBTyxNQUFNO0lBQ2pCLE1BQU0sQ0FBQyxlQUFlLEdBQUcsQ0FBQyxDQUFDO0lBQzNCLE1BQU0sQ0FBQyxhQUFhLEdBQUcsQ0FBQyxDQUFDO0lBQ3pCLE1BQU0sQ0FBQyxnQkFBZ0IsR0FBRyxDQUFDLENBQUM7SUFFckIsRUFBRSxDQUFpQjtJQUNuQixTQUFTLEdBQVcsRUFBRSxDQUFDO0lBQ3ZCLFFBQVEsR0FBVyxFQUFFLENBQUM7SUFDdEIsS0FBSyxHQUFXLEVBQUUsQ0FBQztJQUNuQixLQUFLLEdBQVksRUFBRSxDQUFDO0lBQ3BCLElBQUksR0FBVyxDQUFDLENBQUM7SUFDakIsTUFBTSxHQUFXLENBQUMsQ0FBQztJQUNuQixVQUFVLEdBQVcsRUFBRSxDQUFDO0lBRXhCLFVBQVUsR0FBVyxRQUFRLENBQUM7SUFDOUIsWUFBWSxHQUFXLEVBQUUsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBjbGFzcyBNQ1VzZXIge1xuICBzdGF0aWMgU1RBVFVTX0lOQUNUSVZFID0gMDtcbiAgc3RhdGljIFNUQVRVU19BQ1RJVkUgPSAxO1xuICBzdGF0aWMgU1RBVFVTX1NVU1BFTkRFRCA9IDI7XG5cbiAgcHVibGljIGlkPzogbnVtYmVyfHN0cmluZztcbiAgcHVibGljIGZpcnN0bmFtZTogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBsYXN0bmFtZTogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBlbWFpbDogc3RyaW5nID0gJyc7XG4gIHB1YmxpYyBwaG90bz86IHN0cmluZyA9ICcnO1xuICBwdWJsaWMgcm9sZTogbnVtYmVyID0gMDtcbiAgcHVibGljIHN0YXR1czogbnVtYmVyID0gMDtcbiAgcHVibGljIGNyZWF0ZWRfYXQ6IHN0cmluZyA9ICcnO1xuXG4gIHB1YmxpYyB0b2tlbl90eXBlOiBzdHJpbmcgPSAnYmVhcmVyJztcbiAgcHVibGljIGFjY2Vzc190b2tlbjogc3RyaW5nID0gJyc7XG59XG4iXX0=
@@ -0,0 +1,24 @@
1
+ import { inject } from '@angular/core';
2
+ import { RedirectCommand, Router } from '@angular/router';
3
+ import { MCAuthenticationService } from '../services/authentication.service';
4
+ import { map } from 'rxjs';
5
+ export const mcAuthGuard = (route, state) => {
6
+ const router = inject(Router);
7
+ const authService = inject(MCAuthenticationService);
8
+ let paramRedirect = window.location.pathname;
9
+ if (paramRedirect.includes('auth/login')) {
10
+ paramRedirect = '';
11
+ }
12
+ return authService.getUser()
13
+ .pipe(map(user => {
14
+ if (user == undefined) {
15
+ const loginPath = router.parseUrl("/login");
16
+ loginPath.queryParams = {
17
+ redirect: paramRedirect
18
+ };
19
+ return new RedirectCommand(loginPath, { skipLocationChange: true });
20
+ }
21
+ return true;
22
+ }));
23
+ };
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5ndWFyZC5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21ja2l0L2F1dGgvc3JjL2xpYi9ndWFyZHMvYXV0aC5ndWFyZC50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3ZDLE9BQU8sRUFBaUIsZUFBZSxFQUFFLE1BQU0sRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQ3pFLE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxNQUFNLENBQUM7QUFFM0IsTUFBTSxDQUFDLE1BQU0sV0FBVyxHQUFrQixDQUFDLEtBQUssRUFBRSxLQUFLLEVBQUUsRUFBRTtJQUN6RCxNQUFNLE1BQU0sR0FBRyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDOUIsTUFBTSxXQUFXLEdBQUcsTUFBTSxDQUFDLHVCQUF1QixDQUFDLENBQUM7SUFFcEQsSUFBSSxhQUFhLEdBQUcsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUM7SUFDN0MsSUFBSSxhQUFhLENBQUMsUUFBUSxDQUFDLFlBQVksQ0FBQyxFQUFFLENBQUM7UUFDekMsYUFBYSxHQUFHLEVBQUUsQ0FBQztJQUNyQixDQUFDO0lBRUQsT0FBTyxXQUFXLENBQUMsT0FBTyxFQUFFO1NBQzNCLElBQUksQ0FBQyxHQUFHLENBQUMsSUFBSSxDQUFDLEVBQUU7UUFDZixJQUFHLElBQUksSUFBSSxTQUFTLEVBQUMsQ0FBQztZQUNwQixNQUFNLFNBQVMsR0FBRyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO1lBQzVDLFNBQVMsQ0FBQyxXQUFXLEdBQUc7Z0JBQ3RCLFFBQVEsRUFBRSxhQUFhO2FBQ3hCLENBQUM7WUFDRixPQUFPLElBQUksZUFBZSxDQUFDLFNBQVMsRUFBRSxFQUFFLGtCQUFrQixFQUFFLElBQUksRUFBRSxDQUFDLENBQUM7UUFDdEUsQ0FBQztRQUVELE9BQU8sSUFBSSxDQUFDO0lBQ2QsQ0FBQyxDQUFDLENBQUMsQ0FBQztBQUNOLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IGluamVjdCB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xuaW1wb3J0IHsgQ2FuQWN0aXZhdGVGbiwgUmVkaXJlY3RDb21tYW5kLCBSb3V0ZXIgfSBmcm9tICdAYW5ndWxhci9yb3V0ZXInO1xuaW1wb3J0IHsgTUNBdXRoZW50aWNhdGlvblNlcnZpY2UgfSBmcm9tICcuLi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcbmltcG9ydCB7IG1hcCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgbWNBdXRoR3VhcmQ6IENhbkFjdGl2YXRlRm4gPSAocm91dGUsIHN0YXRlKSA9PiB7XG4gIGNvbnN0IHJvdXRlciA9IGluamVjdChSb3V0ZXIpO1xuICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChNQ0F1dGhlbnRpY2F0aW9uU2VydmljZSk7XG5cbiAgbGV0IHBhcmFtUmVkaXJlY3QgPSB3aW5kb3cubG9jYXRpb24ucGF0aG5hbWU7XG4gIGlmIChwYXJhbVJlZGlyZWN0LmluY2x1ZGVzKCdhdXRoL2xvZ2luJykpIHtcbiAgICBwYXJhbVJlZGlyZWN0ID0gJyc7XG4gIH1cblxuICByZXR1cm4gYXV0aFNlcnZpY2UuZ2V0VXNlcigpXG4gIC5waXBlKG1hcCh1c2VyID0+IHtcbiAgICBpZih1c2VyID09IHVuZGVmaW5lZCl7XG4gICAgICBjb25zdCBsb2dpblBhdGggPSByb3V0ZXIucGFyc2VVcmwoXCIvbG9naW5cIik7XG4gICAgICBsb2dpblBhdGgucXVlcnlQYXJhbXMgPSB7XG4gICAgICAgIHJlZGlyZWN0OiBwYXJhbVJlZGlyZWN0XG4gICAgICB9O1xuICAgICAgcmV0dXJuIG5ldyBSZWRpcmVjdENvbW1hbmQobG9naW5QYXRoLCB7IHNraXBMb2NhdGlvbkNoYW5nZTogdHJ1ZSB9KTtcbiAgICB9XG5cbiAgICByZXR1cm4gdHJ1ZTtcbiAgfSkpO1xufTtcbiJdfQ==
@@ -0,0 +1,35 @@
1
+ import { HttpErrorResponse, HttpResponse } from '@angular/common/http';
2
+ import { inject } from '@angular/core';
3
+ import { MC_AUTH_CONFIG } from '../entities/mc-auth-config';
4
+ import { MCAuthenticationService } from '../services/authentication.service';
5
+ import { catchError, switchMap, tap } from 'rxjs';
6
+ export const authInterceptor = (req, next) => {
7
+ const config = inject(MC_AUTH_CONFIG);
8
+ const authService = inject(MCAuthenticationService);
9
+ if (req.url.indexOf(config.baseUrl) == -1) {
10
+ return next(req);
11
+ }
12
+ return authService.getUser()
13
+ .pipe(switchMap(user => {
14
+ if (user == undefined) {
15
+ return next(req);
16
+ }
17
+ return next(req.clone({
18
+ headers: req.headers.set('Authorization', `Bearer ${user.access_token}`)
19
+ }));
20
+ }), tap(event => {
21
+ if (event instanceof HttpResponse && event.status == 401) {
22
+ authService.removeUser().subscribe(() => {
23
+ window.location.reload();
24
+ });
25
+ }
26
+ }), catchError(err => {
27
+ if (err instanceof HttpErrorResponse && err.status == 401) {
28
+ authService.removeUser().subscribe(() => {
29
+ window.location.reload();
30
+ });
31
+ }
32
+ throw err;
33
+ }));
34
+ };
35
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5pbnRlcmNlcHRvci5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21ja2l0L2F1dGgvc3JjL2xpYi9pbnRlcmNlcHRvcnMvYXV0aC5pbnRlcmNlcHRvci50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiQUFBQSxPQUFPLEVBQUUsaUJBQWlCLEVBQXFCLFlBQVksRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQzFGLE9BQU8sRUFBRSxNQUFNLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDdkMsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLDRCQUE0QixDQUFDO0FBQzVELE9BQU8sRUFBRSx1QkFBdUIsRUFBRSxNQUFNLG9DQUFvQyxDQUFDO0FBQzdFLE9BQU8sRUFBRSxVQUFVLEVBQUUsU0FBUyxFQUFFLEdBQUcsRUFBRSxNQUFNLE1BQU0sQ0FBQztBQUVsRCxNQUFNLENBQUMsTUFBTSxlQUFlLEdBQXNCLENBQUMsR0FBRyxFQUFFLElBQUksRUFBRSxFQUFFO0lBRTlELE1BQU0sTUFBTSxHQUFHLE1BQU0sQ0FBQyxjQUFjLENBQUMsQ0FBQztJQUN0QyxNQUFNLFdBQVcsR0FBRyxNQUFNLENBQUMsdUJBQXVCLENBQUMsQ0FBQztJQUVwRCxJQUFHLEdBQUcsQ0FBQyxHQUFHLENBQUMsT0FBTyxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLENBQUMsRUFBQyxDQUFDO1FBQ3hDLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ25CLENBQUM7SUFFRCxPQUFPLFdBQVcsQ0FBQyxPQUFPLEVBQUU7U0FDM0IsSUFBSSxDQUVILFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRTtRQUVmLElBQUcsSUFBSSxJQUFJLFNBQVMsRUFBQyxDQUFDO1lBQ3BCLE9BQU8sSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO1FBQ25CLENBQUM7UUFFRCxPQUFPLElBQUksQ0FBQyxHQUFHLENBQUMsS0FBSyxDQUFDO1lBQ3BCLE9BQU8sRUFBRSxHQUFHLENBQUMsT0FBTyxDQUFDLEdBQUcsQ0FBQyxlQUFlLEVBQUUsVUFBVSxJQUFJLENBQUMsWUFBWSxFQUFFLENBQUM7U0FDekUsQ0FBQyxDQUFDLENBQUM7SUFFTixDQUFDLENBQUMsRUFDRixHQUFHLENBQUMsS0FBSyxDQUFDLEVBQUU7UUFFVixJQUFHLEtBQUssWUFBWSxZQUFZLElBQUksS0FBSyxDQUFDLE1BQU0sSUFBSSxHQUFHLEVBQUMsQ0FBQztZQUN2RCxXQUFXLENBQUMsVUFBVSxFQUFFLENBQUMsU0FBUyxDQUFDLEdBQUcsRUFBRTtnQkFDdEMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxNQUFNLEVBQUUsQ0FBQztZQUMzQixDQUFDLENBQUMsQ0FBQztRQUNMLENBQUM7SUFFSCxDQUFDLENBQUMsRUFDRixVQUFVLENBQUMsR0FBRyxDQUFDLEVBQUU7UUFFZixJQUFHLEdBQUcsWUFBWSxpQkFBaUIsSUFBSSxHQUFHLENBQUMsTUFBTSxJQUFJLEdBQUcsRUFBQyxDQUFDO1lBQ3hELFdBQVcsQ0FBQyxVQUFVLEVBQUUsQ0FBQyxTQUFTLENBQUMsR0FBRyxFQUFFO2dCQUN0QyxNQUFNLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRSxDQUFDO1lBQzNCLENBQUMsQ0FBQyxDQUFDO1FBQ0wsQ0FBQztRQUVELE1BQU0sR0FBRyxDQUFDO0lBQ1osQ0FBQyxDQUFDLENBR0gsQ0FBQztBQUNKLENBQUMsQ0FBQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEh0dHBFcnJvclJlc3BvbnNlLCBIdHRwSW50ZXJjZXB0b3JGbiwgSHR0cFJlc3BvbnNlIH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xuaW1wb3J0IHsgaW5qZWN0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBNQ19BVVRIX0NPTkZJRyB9IGZyb20gJy4uL2VudGl0aWVzL21jLWF1dGgtY29uZmlnJztcbmltcG9ydCB7IE1DQXV0aGVudGljYXRpb25TZXJ2aWNlIH0gZnJvbSAnLi4vc2VydmljZXMvYXV0aGVudGljYXRpb24uc2VydmljZSc7XG5pbXBvcnQgeyBjYXRjaEVycm9yLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMnO1xuXG5leHBvcnQgY29uc3QgYXV0aEludGVyY2VwdG9yOiBIdHRwSW50ZXJjZXB0b3JGbiA9IChyZXEsIG5leHQpID0+IHtcblxuICBjb25zdCBjb25maWcgPSBpbmplY3QoTUNfQVVUSF9DT05GSUcpO1xuICBjb25zdCBhdXRoU2VydmljZSA9IGluamVjdChNQ0F1dGhlbnRpY2F0aW9uU2VydmljZSk7XG5cbiAgaWYocmVxLnVybC5pbmRleE9mKGNvbmZpZy5iYXNlVXJsKSA9PSAtMSl7XG4gICAgcmV0dXJuIG5leHQocmVxKTtcbiAgfVxuXG4gIHJldHVybiBhdXRoU2VydmljZS5nZXRVc2VyKClcbiAgLnBpcGUoXG5cbiAgICBzd2l0Y2hNYXAodXNlciA9PiB7XG5cbiAgICAgIGlmKHVzZXIgPT0gdW5kZWZpbmVkKXtcbiAgICAgICAgcmV0dXJuIG5leHQocmVxKTtcbiAgICAgIH1cblxuICAgICAgcmV0dXJuIG5leHQocmVxLmNsb25lKHtcbiAgICAgICAgaGVhZGVyczogcmVxLmhlYWRlcnMuc2V0KCdBdXRob3JpemF0aW9uJywgYEJlYXJlciAke3VzZXIuYWNjZXNzX3Rva2VufWApXG4gICAgICB9KSk7XG5cbiAgICB9KSxcbiAgICB0YXAoZXZlbnQgPT4ge1xuXG4gICAgICBpZihldmVudCBpbnN0YW5jZW9mIEh0dHBSZXNwb25zZSAmJiBldmVudC5zdGF0dXMgPT0gNDAxKXtcbiAgICAgICAgYXV0aFNlcnZpY2UucmVtb3ZlVXNlcigpLnN1YnNjcmliZSgoKSA9PiB7XG4gICAgICAgICAgd2luZG93LmxvY2F0aW9uLnJlbG9hZCgpO1xuICAgICAgICB9KTtcbiAgICAgIH1cblxuICAgIH0pLFxuICAgIGNhdGNoRXJyb3IoZXJyID0+IHtcblxuICAgICAgaWYoZXJyIGluc3RhbmNlb2YgSHR0cEVycm9yUmVzcG9uc2UgJiYgZXJyLnN0YXR1cyA9PSA0MDEpe1xuICAgICAgICBhdXRoU2VydmljZS5yZW1vdmVVc2VyKCkuc3Vic2NyaWJlKCgpID0+IHtcbiAgICAgICAgICB3aW5kb3cubG9jYXRpb24ucmVsb2FkKCk7XG4gICAgICAgIH0pO1xuICAgICAgfVxuXG4gICAgICB0aHJvdyBlcnI7XG4gICAgfSksXG5cblxuICApO1xufTtcbiJdfQ==
@@ -6,35 +6,60 @@ import { InputIconModule } from 'primeng/inputicon';
6
6
  import { InputTextModule } from 'primeng/inputtext';
7
7
  import { PasswordModule } from 'primeng/password';
8
8
  import { FormGroup, FormsModule, ReactiveFormsModule, FormControl, Validators } from '@angular/forms';
9
+ import { MessagesModule } from 'primeng/messages';
10
+ import { MessageService } from 'primeng/api';
9
11
  import * as i0 from "@angular/core";
10
- import * as i1 from "@angular/forms";
11
- import * as i2 from "primeng/button";
12
- import * as i3 from "primeng/api";
12
+ import * as i1 from "primeng/api";
13
+ import * as i2 from "@angular/forms";
14
+ import * as i3 from "primeng/button";
13
15
  import * as i4 from "primeng/card";
14
16
  import * as i5 from "primeng/iconfield";
15
17
  import * as i6 from "primeng/inputicon";
16
18
  import * as i7 from "primeng/inputtext";
17
19
  import * as i8 from "primeng/password";
20
+ import * as i9 from "primeng/messages";
18
21
  export class MCAuthBasicComponent {
22
+ messageService;
19
23
  config;
20
24
  submit = new EventEmitter();
21
25
  group = new FormGroup({
22
26
  email: new FormControl('', [Validators.required, Validators.email]),
23
27
  password: new FormControl('', Validators.required)
24
28
  });
29
+ isSending = false;
30
+ constructor(messageService) {
31
+ this.messageService = messageService;
32
+ }
25
33
  onClickSubmit() {
34
+ this.clearMessages();
26
35
  let obj = new MCAuthModel();
27
36
  obj.email = this.group.get('email')?.value;
28
37
  obj.password = this.group.get('password')?.value;
38
+ this.showLoading();
29
39
  this.submit.emit(obj);
30
40
  }
31
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MCAuthBasicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
32
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: MCAuthBasicComponent, isStandalone: true, selector: "mc-auth-basic", inputs: { config: "config" }, outputs: { submit: "submit" }, ngImport: i0, template: "<div class=\"mc-auth-basic-container\">\n <p-card [header]=\"config.title ?? 'Log in'\" [subheader]=\"config.subtitle ?? 'Please enter your details'\" [style]=\"{ width: '500px', 'max-width': '500px' }\">\n\n <div class=\"\" [formGroup]=\"group\">\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-envelope\" />\n <input type=\"text\" pInputText [placeholder]=\"config.emailPlaceholder ?? 'Email'\" formControlName=\"email\" />\n </p-iconField>\n\n <br/><br/>\n\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-lock\" />\n <input type=\"text\" pPassword [placeholder]=\"config.passwordPlaceholder ?? 'Password'\" [feedback]=\"false\" toggleMask=\"true\" formControlName=\"password\" />\n </p-iconField>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex gap-3 mt-1\">\n <p-button [label]=\"config.submitButton ?? 'Log in'\" [style]=\"{ width: '100%' }\" (click)=\"onClickSubmit()\" [disabled]=\"group.invalid\" />\n </div>\n </ng-template>\n </p-card>\n</div>\n", styles: [".mc-auth-basic-container{display:flex;justify-content:center;min-height:100%;align-items:center}p-iconField input{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: CardModule }, { kind: "component", type: i4.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "ngmodule", type: IconFieldModule }, { kind: "component", type: i5.IconField, selector: "p-iconField", inputs: ["iconPosition"] }, { kind: "ngmodule", type: InputIconModule }, { kind: "component", type: i6.InputIcon, selector: "p-inputIcon", inputs: ["styleClass"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i7.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: PasswordModule }, { kind: "directive", type: i8.PasswordDirective, selector: "[pPassword]", inputs: ["promptLabel", "weakLabel", "mediumLabel", "strongLabel", "feedback", "showPassword", "variant"] }] });
41
+ showSuccessMessage(message) {
42
+ this.messageService.add({ severity: 'success', summary: message });
43
+ }
44
+ showErrorMessage(message) {
45
+ this.messageService.add({ severity: 'error', summary: message });
46
+ }
47
+ clearMessages() {
48
+ this.messageService.clear();
49
+ }
50
+ showLoading() {
51
+ this.isSending = true;
52
+ }
53
+ hideLoading() {
54
+ this.isSending = false;
55
+ }
56
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MCAuthBasicComponent, deps: [{ token: i1.MessageService }], target: i0.ɵɵFactoryTarget.Component });
57
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: MCAuthBasicComponent, isStandalone: true, selector: "mc-auth-basic", inputs: { config: "config" }, outputs: { submit: "submit" }, providers: [MessageService], ngImport: i0, template: "<div class=\"mc-auth-basic-container\">\n <p-card [header]=\"config.title ?? 'Log in'\" [subheader]=\"config.subtitle ?? 'Please enter your details'\" [style]=\"{ width: '500px', 'max-width': '500px' }\">\n\n <div class=\"\" [formGroup]=\"group\">\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-envelope\" />\n <input type=\"text\" pInputText [placeholder]=\"config.emailPlaceholder ?? 'Email'\" formControlName=\"email\" />\n </p-iconField>\n\n <br/><br/>\n\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-lock\" />\n <input type=\"password\" pPassword [placeholder]=\"config.passwordPlaceholder ?? 'Password'\" [feedback]=\"false\" toggleMask=\"true\" formControlName=\"password\" />\n </p-iconField>\n\n <p-messages />\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex gap-3 mt-1\">\n <p-button [label]=\"config.submitButton ?? 'Log in'\" [style]=\"{ width: '100%' }\" (click)=\"onClickSubmit()\" [disabled]=\"group.invalid || isSending\" />\n </div>\n </ng-template>\n </p-card>\n</div>\n", styles: [".mc-auth-basic-container{display:flex;justify-content:center;min-height:100%;align-items:center}p-iconField input{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: CardModule }, { kind: "component", type: i4.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "ngmodule", type: IconFieldModule }, { kind: "component", type: i5.IconField, selector: "p-iconField", inputs: ["iconPosition"] }, { kind: "ngmodule", type: InputIconModule }, { kind: "component", type: i6.InputIcon, selector: "p-inputIcon", inputs: ["styleClass"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i7.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: PasswordModule }, { kind: "directive", type: i8.PasswordDirective, selector: "[pPassword]", inputs: ["promptLabel", "weakLabel", "mediumLabel", "strongLabel", "feedback", "showPassword", "variant"] }, { kind: "ngmodule", type: MessagesModule }, { kind: "component", type: i9.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange", "onClose"] }] });
33
58
  }
34
59
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MCAuthBasicComponent, decorators: [{
35
60
  type: Component,
36
- args: [{ selector: 'mc-auth-basic', standalone: true, imports: [FormsModule, ReactiveFormsModule, ButtonModule, CardModule, IconFieldModule, InputIconModule, InputTextModule, PasswordModule], template: "<div class=\"mc-auth-basic-container\">\n <p-card [header]=\"config.title ?? 'Log in'\" [subheader]=\"config.subtitle ?? 'Please enter your details'\" [style]=\"{ width: '500px', 'max-width': '500px' }\">\n\n <div class=\"\" [formGroup]=\"group\">\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-envelope\" />\n <input type=\"text\" pInputText [placeholder]=\"config.emailPlaceholder ?? 'Email'\" formControlName=\"email\" />\n </p-iconField>\n\n <br/><br/>\n\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-lock\" />\n <input type=\"text\" pPassword [placeholder]=\"config.passwordPlaceholder ?? 'Password'\" [feedback]=\"false\" toggleMask=\"true\" formControlName=\"password\" />\n </p-iconField>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex gap-3 mt-1\">\n <p-button [label]=\"config.submitButton ?? 'Log in'\" [style]=\"{ width: '100%' }\" (click)=\"onClickSubmit()\" [disabled]=\"group.invalid\" />\n </div>\n </ng-template>\n </p-card>\n</div>\n", styles: [".mc-auth-basic-container{display:flex;justify-content:center;min-height:100%;align-items:center}p-iconField input{width:100%}\n"] }]
37
- }], propDecorators: { config: [{
61
+ args: [{ selector: 'mc-auth-basic', standalone: true, imports: [FormsModule, ReactiveFormsModule, ButtonModule, CardModule, IconFieldModule, InputIconModule, InputTextModule, PasswordModule, MessagesModule], providers: [MessageService], template: "<div class=\"mc-auth-basic-container\">\n <p-card [header]=\"config.title ?? 'Log in'\" [subheader]=\"config.subtitle ?? 'Please enter your details'\" [style]=\"{ width: '500px', 'max-width': '500px' }\">\n\n <div class=\"\" [formGroup]=\"group\">\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-envelope\" />\n <input type=\"text\" pInputText [placeholder]=\"config.emailPlaceholder ?? 'Email'\" formControlName=\"email\" />\n </p-iconField>\n\n <br/><br/>\n\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-lock\" />\n <input type=\"password\" pPassword [placeholder]=\"config.passwordPlaceholder ?? 'Password'\" [feedback]=\"false\" toggleMask=\"true\" formControlName=\"password\" />\n </p-iconField>\n\n <p-messages />\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex gap-3 mt-1\">\n <p-button [label]=\"config.submitButton ?? 'Log in'\" [style]=\"{ width: '100%' }\" (click)=\"onClickSubmit()\" [disabled]=\"group.invalid || isSending\" />\n </div>\n </ng-template>\n </p-card>\n</div>\n", styles: [".mc-auth-basic-container{display:flex;justify-content:center;min-height:100%;align-items:center}p-iconField input{width:100%}\n"] }]
62
+ }], ctorParameters: () => [{ type: i1.MessageService }], propDecorators: { config: [{
38
63
  type: Input
39
64
  }], submit: [{
40
65
  type: Output
@@ -50,4 +75,4 @@ export class MCAuthModel {
50
75
  email;
51
76
  password;
52
77
  }
53
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1iYXNpYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tY2tpdC9hdXRoL3NyYy9saWIvcGFnZXMvYXV0aC1iYXNpYy9hdXRoLWJhc2ljLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21ja2l0L2F1dGgvc3JjL2xpYi9wYWdlcy9hdXRoLWJhc2ljL2F1dGgtYmFzaWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDOzs7Ozs7Ozs7O0FBV3RHLE1BQU0sT0FBTyxvQkFBb0I7SUFDdEIsTUFBTSxDQUFxQjtJQUMxQixNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztJQUVuRCxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUM7UUFDcEIsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFTLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNFLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBUyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztLQUMzRCxDQUFDLENBQUM7SUFFSCxhQUFhO1FBQ1gsSUFBSSxHQUFHLEdBQUcsSUFBSSxXQUFXLEVBQUUsQ0FBQztRQUM1QixHQUFHLENBQUMsS0FBSyxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUMzQyxHQUFHLENBQUMsUUFBUSxHQUFHLElBQUksQ0FBQyxLQUFLLENBQUMsR0FBRyxDQUFDLFVBQVUsQ0FBQyxFQUFFLEtBQUssQ0FBQztRQUVqRCxJQUFJLENBQUMsTUFBTSxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztJQUN4QixDQUFDO3VHQWZVLG9CQUFvQjsyRkFBcEIsb0JBQW9CLHNJQ2xCakMscWxDQXdCQSx3TERWWSxXQUFXLGtqQkFBRSxtQkFBbUIsK1VBQUUsWUFBWSxvZUFBRSxVQUFVLGdKQUFFLGVBQWUsNEhBQUUsZUFBZSwwSEFBRSxlQUFlLHdIQUFFLGNBQWM7OzJGQUk1SCxvQkFBb0I7a0JBUGhDLFNBQVM7K0JBQ0UsZUFBZSxjQUNiLElBQUksV0FDUCxDQUFDLFdBQVcsRUFBRSxtQkFBbUIsRUFBRSxZQUFZLEVBQUUsVUFBVSxFQUFFLGVBQWUsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGNBQWMsQ0FBQzs4QkFLL0gsTUFBTTtzQkFBZCxLQUFLO2dCQUNJLE1BQU07c0JBQWYsTUFBTTs7QUFnQlQsTUFBTSxPQUFPLGlCQUFpQjtJQUM1QixLQUFLLENBQVU7SUFDZixRQUFRLENBQVU7SUFFbEIsZ0JBQWdCLENBQVU7SUFDMUIsbUJBQW1CLENBQVU7SUFFN0IsWUFBWSxDQUFVO0NBQ3ZCO0FBRUQsTUFBTSxPQUFPLFdBQVc7SUFDdEIsS0FBSyxDQUFlO0lBQ3BCLFFBQVEsQ0FBZTtDQUN4QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IENvbXBvbmVudCwgRXZlbnRFbWl0dGVyLCBJbnB1dCwgT3V0cHV0IH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XG5pbXBvcnQgeyBDYXJkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9jYXJkJztcbmltcG9ydCB7IEJ1dHRvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvYnV0dG9uJztcbmltcG9ydCB7IEljb25GaWVsZE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaWNvbmZpZWxkJztcbmltcG9ydCB7IElucHV0SWNvbk1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXRpY29uJztcbmltcG9ydCB7IElucHV0VGV4dE1vZHVsZSB9IGZyb20gJ3ByaW1lbmcvaW5wdXR0ZXh0JztcbmltcG9ydCB7IFBhc3N3b3JkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9wYXNzd29yZCc7XG5pbXBvcnQgeyBGb3JtR3JvdXAsIEZvcm1zTW9kdWxlLCBSZWFjdGl2ZUZvcm1zTW9kdWxlLCBGb3JtQ29udHJvbCwgVmFsaWRhdG9ycyB9IGZyb20gJ0Bhbmd1bGFyL2Zvcm1zJztcblxuXG5cbkBDb21wb25lbnQoe1xuICBzZWxlY3RvcjogJ21jLWF1dGgtYmFzaWMnLFxuICBzdGFuZGFsb25lOiB0cnVlLFxuICBpbXBvcnRzOiBbRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEJ1dHRvbk1vZHVsZSwgQ2FyZE1vZHVsZSwgSWNvbkZpZWxkTW9kdWxlLCBJbnB1dEljb25Nb2R1bGUsIElucHV0VGV4dE1vZHVsZSwgUGFzc3dvcmRNb2R1bGVdLFxuICB0ZW1wbGF0ZVVybDogJy4vYXV0aC1iYXNpYy5jb21wb25lbnQuaHRtbCcsXG4gIHN0eWxlVXJsOiAnLi9hdXRoLWJhc2ljLmNvbXBvbmVudC5zY3NzJ1xufSlcbmV4cG9ydCBjbGFzcyBNQ0F1dGhCYXNpY0NvbXBvbmVudCB7XG4gIEBJbnB1dCgpIGNvbmZpZyE6IE1DQXV0aEJhc2ljQ29uZmlnO1xuICBAT3V0cHV0KCkgc3VibWl0ID0gbmV3IEV2ZW50RW1pdHRlcjxNQ0F1dGhNb2RlbD4oKTtcblxuICBncm91cCA9IG5ldyBGb3JtR3JvdXAoe1xuICAgIGVtYWlsOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJywgW1ZhbGlkYXRvcnMucmVxdWlyZWQsIFZhbGlkYXRvcnMuZW1haWxdKSxcbiAgICBwYXNzd29yZDogbmV3IEZvcm1Db250cm9sPHN0cmluZz4oJycsIFZhbGlkYXRvcnMucmVxdWlyZWQpXG4gIH0pO1xuXG4gIG9uQ2xpY2tTdWJtaXQoKSB7XG4gICAgbGV0IG9iaiA9IG5ldyBNQ0F1dGhNb2RlbCgpO1xuICAgIG9iai5lbWFpbCA9IHRoaXMuZ3JvdXAuZ2V0KCdlbWFpbCcpPy52YWx1ZTtcbiAgICBvYmoucGFzc3dvcmQgPSB0aGlzLmdyb3VwLmdldCgncGFzc3dvcmQnKT8udmFsdWU7XG5cbiAgICB0aGlzLnN1Ym1pdC5lbWl0KG9iaik7XG4gIH1cbn1cblxuZXhwb3J0IGNsYXNzIE1DQXV0aEJhc2ljQ29uZmlnIHtcbiAgdGl0bGU/OiBzdHJpbmc7XG4gIHN1YnRpdGxlPzogc3RyaW5nO1xuXG4gIGVtYWlsUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG4gIHBhc3N3b3JkUGxhY2Vob2xkZXI/OiBzdHJpbmc7XG5cbiAgc3VibWl0QnV0dG9uPzogc3RyaW5nO1xufVxuXG5leHBvcnQgY2xhc3MgTUNBdXRoTW9kZWwge1xuICBlbWFpbD86IHN0cmluZ3xudWxsO1xuICBwYXNzd29yZD86IHN0cmluZ3xudWxsO1xufVxuIiwiPGRpdiBjbGFzcz1cIm1jLWF1dGgtYmFzaWMtY29udGFpbmVyXCI+XG4gIDxwLWNhcmQgW2hlYWRlcl09XCJjb25maWcudGl0bGUgPz8gJ0xvZyBpbidcIiBbc3ViaGVhZGVyXT1cImNvbmZpZy5zdWJ0aXRsZSA/PyAnUGxlYXNlIGVudGVyIHlvdXIgZGV0YWlscydcIiBbc3R5bGVdPVwieyB3aWR0aDogJzUwMHB4JywgJ21heC13aWR0aCc6ICc1MDBweCcgfVwiPlxuXG4gICAgPGRpdiBjbGFzcz1cIlwiIFtmb3JtR3JvdXBdPVwiZ3JvdXBcIj5cbiAgICAgIDxwLWljb25GaWVsZCBpY29uUG9zaXRpb249XCJsZWZ0XCI+XG4gICAgICAgIDxwLWlucHV0SWNvbiBzdHlsZUNsYXNzPVwicGkgcGktZW52ZWxvcGVcIiAvPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwSW5wdXRUZXh0IFtwbGFjZWhvbGRlcl09XCJjb25maWcuZW1haWxQbGFjZWhvbGRlciA/PyAnRW1haWwnXCIgZm9ybUNvbnRyb2xOYW1lPVwiZW1haWxcIiAvPlxuICAgICAgPC9wLWljb25GaWVsZD5cblxuICAgICAgPGJyLz48YnIvPlxuXG4gICAgICA8cC1pY29uRmllbGQgaWNvblBvc2l0aW9uPVwibGVmdFwiPlxuICAgICAgICA8cC1pbnB1dEljb24gc3R5bGVDbGFzcz1cInBpIHBpLWxvY2tcIiAvPlxuICAgICAgICA8aW5wdXQgdHlwZT1cInRleHRcIiBwUGFzc3dvcmQgW3BsYWNlaG9sZGVyXT1cImNvbmZpZy5wYXNzd29yZFBsYWNlaG9sZGVyID8/ICdQYXNzd29yZCdcIiBbZmVlZGJhY2tdPVwiZmFsc2VcIiB0b2dnbGVNYXNrPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCIgLz5cbiAgICAgIDwvcC1pY29uRmllbGQ+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMyBtdC0xXCI+XG4gICAgICAgIDxwLWJ1dHRvbiBbbGFiZWxdPVwiY29uZmlnLnN1Ym1pdEJ1dHRvbiA/PyAnTG9nIGluJ1wiIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiIChjbGljayk9XCJvbkNsaWNrU3VibWl0KClcIiBbZGlzYWJsZWRdPVwiZ3JvdXAuaW52YWxpZFwiIC8+XG4gICAgICA8L2Rpdj5cbiAgICA8L25nLXRlbXBsYXRlPlxuICA8L3AtY2FyZD5cbjwvZGl2PlxuIl19
78
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC1iYXNpYy5jb21wb25lbnQuanMiLCJzb3VyY2VSb290IjoiIiwic291cmNlcyI6WyIuLi8uLi8uLi8uLi8uLi8uLi8uLi9wcm9qZWN0cy9tY2tpdC9hdXRoL3NyYy9saWIvcGFnZXMvYXV0aC1iYXNpYy9hdXRoLWJhc2ljLmNvbXBvbmVudC50cyIsIi4uLy4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21ja2l0L2F1dGgvc3JjL2xpYi9wYWdlcy9hdXRoLWJhc2ljL2F1dGgtYmFzaWMuY29tcG9uZW50Lmh0bWwiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUEsT0FBTyxFQUFFLFNBQVMsRUFBRSxZQUFZLEVBQUUsS0FBSyxFQUFFLE1BQU0sRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUN2RSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sY0FBYyxDQUFDO0FBQzFDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUM5QyxPQUFPLEVBQUUsZUFBZSxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDcEQsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLG1CQUFtQixDQUFDO0FBQ3BELE9BQU8sRUFBRSxlQUFlLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNwRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFNBQVMsRUFBRSxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsV0FBVyxFQUFFLFVBQVUsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3RHLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNsRCxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sYUFBYSxDQUFDOzs7Ozs7Ozs7OztBQVk3QyxNQUFNLE9BQU8sb0JBQW9CO0lBWXJCO0lBWEQsTUFBTSxDQUFxQjtJQUMxQixNQUFNLEdBQUcsSUFBSSxZQUFZLEVBQWUsQ0FBQztJQUVuRCxLQUFLLEdBQUcsSUFBSSxTQUFTLENBQUM7UUFDcEIsS0FBSyxFQUFFLElBQUksV0FBVyxDQUFTLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxRQUFRLEVBQUUsVUFBVSxDQUFDLEtBQUssQ0FBQyxDQUFDO1FBQzNFLFFBQVEsRUFBRSxJQUFJLFdBQVcsQ0FBUyxFQUFFLEVBQUUsVUFBVSxDQUFDLFFBQVEsQ0FBQztLQUMzRCxDQUFDLENBQUM7SUFFSCxTQUFTLEdBQUcsS0FBSyxDQUFDO0lBRWxCLFlBQ1UsY0FBOEI7UUFBOUIsbUJBQWMsR0FBZCxjQUFjLENBQWdCO0lBQ3JDLENBQUM7SUFFSixhQUFhO1FBQ1gsSUFBSSxDQUFDLGFBQWEsRUFBRSxDQUFDO1FBRXJCLElBQUksR0FBRyxHQUFHLElBQUksV0FBVyxFQUFFLENBQUM7UUFDNUIsR0FBRyxDQUFDLEtBQUssR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxPQUFPLENBQUMsRUFBRSxLQUFLLENBQUM7UUFDM0MsR0FBRyxDQUFDLFFBQVEsR0FBRyxJQUFJLENBQUMsS0FBSyxDQUFDLEdBQUcsQ0FBQyxVQUFVLENBQUMsRUFBRSxLQUFLLENBQUM7UUFFakQsSUFBSSxDQUFDLFdBQVcsRUFBRSxDQUFDO1FBQ25CLElBQUksQ0FBQyxNQUFNLENBQUMsSUFBSSxDQUFDLEdBQUcsQ0FBQyxDQUFDO0lBQ3hCLENBQUM7SUFFRCxrQkFBa0IsQ0FBQyxPQUFlO1FBQ2hDLElBQUksQ0FBQyxjQUFjLENBQUMsR0FBRyxDQUFDLEVBQUUsUUFBUSxFQUFFLFNBQVMsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFDLENBQUMsQ0FBQztJQUNwRSxDQUFDO0lBRUQsZ0JBQWdCLENBQUMsT0FBZTtRQUM5QixJQUFJLENBQUMsY0FBYyxDQUFDLEdBQUcsQ0FBQyxFQUFFLFFBQVEsRUFBRSxPQUFPLEVBQUUsT0FBTyxFQUFFLE9BQU8sRUFBQyxDQUFDLENBQUM7SUFDbEUsQ0FBQztJQUVELGFBQWE7UUFDWCxJQUFJLENBQUMsY0FBYyxDQUFDLEtBQUssRUFBRSxDQUFDO0lBQzlCLENBQUM7SUFFRCxXQUFXO1FBQ1QsSUFBSSxDQUFDLFNBQVMsR0FBRyxJQUFJLENBQUM7SUFDeEIsQ0FBQztJQUVELFdBQVc7UUFDVCxJQUFJLENBQUMsU0FBUyxHQUFHLEtBQUssQ0FBQztJQUN6QixDQUFDO3VHQTVDVSxvQkFBb0I7MkZBQXBCLG9CQUFvQix5SEFKcEIsQ0FBQyxjQUFjLENBQUMsMEJDakI3Qiw4bkNBMEJBLHdMRFZZLFdBQVcsa2pCQUFFLG1CQUFtQiwrVUFBRSxZQUFZLG9lQUFFLFVBQVUsZ0pBQUUsZUFBZSw0SEFBRSxlQUFlLDBIQUFFLGVBQWUsd0hBQUUsY0FBYyxxTkFBRSxjQUFjOzsyRkFLNUksb0JBQW9CO2tCQVJoQyxTQUFTOytCQUNFLGVBQWUsY0FDYixJQUFJLFdBQ1AsQ0FBQyxXQUFXLEVBQUUsbUJBQW1CLEVBQUUsWUFBWSxFQUFFLFVBQVUsRUFBRSxlQUFlLEVBQUUsZUFBZSxFQUFFLGVBQWUsRUFBRSxjQUFjLEVBQUUsY0FBYyxDQUFDLGFBQzdJLENBQUMsY0FBYyxDQUFDO21GQUtsQixNQUFNO3NCQUFkLEtBQUs7Z0JBQ0ksTUFBTTtzQkFBZixNQUFNOztBQTZDVCxNQUFNLE9BQU8saUJBQWlCO0lBQzVCLEtBQUssQ0FBVTtJQUNmLFFBQVEsQ0FBVTtJQUVsQixnQkFBZ0IsQ0FBVTtJQUMxQixtQkFBbUIsQ0FBVTtJQUU3QixZQUFZLENBQVU7Q0FDdkI7QUFFRCxNQUFNLE9BQU8sV0FBVztJQUN0QixLQUFLLENBQWU7SUFDcEIsUUFBUSxDQUFlO0NBQ3hCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgQ29tcG9uZW50LCBFdmVudEVtaXR0ZXIsIElucHV0LCBPdXRwdXQgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IENhcmRNb2R1bGUgfSBmcm9tICdwcmltZW5nL2NhcmQnO1xuaW1wb3J0IHsgQnV0dG9uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9idXR0b24nO1xuaW1wb3J0IHsgSWNvbkZpZWxkTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pY29uZmllbGQnO1xuaW1wb3J0IHsgSW5wdXRJY29uTW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dGljb24nO1xuaW1wb3J0IHsgSW5wdXRUZXh0TW9kdWxlIH0gZnJvbSAncHJpbWVuZy9pbnB1dHRleHQnO1xuaW1wb3J0IHsgUGFzc3dvcmRNb2R1bGUgfSBmcm9tICdwcmltZW5nL3Bhc3N3b3JkJztcbmltcG9ydCB7IEZvcm1Hcm91cCwgRm9ybXNNb2R1bGUsIFJlYWN0aXZlRm9ybXNNb2R1bGUsIEZvcm1Db250cm9sLCBWYWxpZGF0b3JzIH0gZnJvbSAnQGFuZ3VsYXIvZm9ybXMnO1xuaW1wb3J0IHsgTWVzc2FnZXNNb2R1bGUgfSBmcm9tICdwcmltZW5nL21lc3NhZ2VzJztcbmltcG9ydCB7IE1lc3NhZ2VTZXJ2aWNlIH0gZnJvbSAncHJpbWVuZy9hcGknO1xuXG5cblxuQENvbXBvbmVudCh7XG4gIHNlbGVjdG9yOiAnbWMtYXV0aC1iYXNpYycsXG4gIHN0YW5kYWxvbmU6IHRydWUsXG4gIGltcG9ydHM6IFtGb3Jtc01vZHVsZSwgUmVhY3RpdmVGb3Jtc01vZHVsZSwgQnV0dG9uTW9kdWxlLCBDYXJkTW9kdWxlLCBJY29uRmllbGRNb2R1bGUsIElucHV0SWNvbk1vZHVsZSwgSW5wdXRUZXh0TW9kdWxlLCBQYXNzd29yZE1vZHVsZSwgTWVzc2FnZXNNb2R1bGVdLFxuICBwcm92aWRlcnM6IFtNZXNzYWdlU2VydmljZV0sXG4gIHRlbXBsYXRlVXJsOiAnLi9hdXRoLWJhc2ljLmNvbXBvbmVudC5odG1sJyxcbiAgc3R5bGVVcmw6ICcuL2F1dGgtYmFzaWMuY29tcG9uZW50LnNjc3MnXG59KVxuZXhwb3J0IGNsYXNzIE1DQXV0aEJhc2ljQ29tcG9uZW50IHtcbiAgQElucHV0KCkgY29uZmlnITogTUNBdXRoQmFzaWNDb25maWc7XG4gIEBPdXRwdXQoKSBzdWJtaXQgPSBuZXcgRXZlbnRFbWl0dGVyPE1DQXV0aE1vZGVsPigpO1xuXG4gIGdyb3VwID0gbmV3IEZvcm1Hcm91cCh7XG4gICAgZW1haWw6IG5ldyBGb3JtQ29udHJvbDxzdHJpbmc+KCcnLCBbVmFsaWRhdG9ycy5yZXF1aXJlZCwgVmFsaWRhdG9ycy5lbWFpbF0pLFxuICAgIHBhc3N3b3JkOiBuZXcgRm9ybUNvbnRyb2w8c3RyaW5nPignJywgVmFsaWRhdG9ycy5yZXF1aXJlZClcbiAgfSk7XG5cbiAgaXNTZW5kaW5nID0gZmFsc2U7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBtZXNzYWdlU2VydmljZTogTWVzc2FnZVNlcnZpY2VcbiAgKSB7fVxuXG4gIG9uQ2xpY2tTdWJtaXQoKSB7XG4gICAgdGhpcy5jbGVhck1lc3NhZ2VzKCk7XG5cbiAgICBsZXQgb2JqID0gbmV3IE1DQXV0aE1vZGVsKCk7XG4gICAgb2JqLmVtYWlsID0gdGhpcy5ncm91cC5nZXQoJ2VtYWlsJyk/LnZhbHVlO1xuICAgIG9iai5wYXNzd29yZCA9IHRoaXMuZ3JvdXAuZ2V0KCdwYXNzd29yZCcpPy52YWx1ZTtcblxuICAgIHRoaXMuc2hvd0xvYWRpbmcoKTtcbiAgICB0aGlzLnN1Ym1pdC5lbWl0KG9iaik7XG4gIH1cblxuICBzaG93U3VjY2Vzc01lc3NhZ2UobWVzc2FnZTogc3RyaW5nKSB7XG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5hZGQoeyBzZXZlcml0eTogJ3N1Y2Nlc3MnLCBzdW1tYXJ5OiBtZXNzYWdlfSk7XG4gIH1cblxuICBzaG93RXJyb3JNZXNzYWdlKG1lc3NhZ2U6IHN0cmluZykge1xuICAgIHRoaXMubWVzc2FnZVNlcnZpY2UuYWRkKHsgc2V2ZXJpdHk6ICdlcnJvcicsIHN1bW1hcnk6IG1lc3NhZ2V9KTtcbiAgfVxuXG4gIGNsZWFyTWVzc2FnZXMoKSB7XG4gICAgdGhpcy5tZXNzYWdlU2VydmljZS5jbGVhcigpO1xuICB9XG5cbiAgc2hvd0xvYWRpbmcoKSB7XG4gICAgdGhpcy5pc1NlbmRpbmcgPSB0cnVlO1xuICB9XG5cbiAgaGlkZUxvYWRpbmcoKSB7XG4gICAgdGhpcy5pc1NlbmRpbmcgPSBmYWxzZTtcbiAgfVxufVxuXG5leHBvcnQgY2xhc3MgTUNBdXRoQmFzaWNDb25maWcge1xuICB0aXRsZT86IHN0cmluZztcbiAgc3VidGl0bGU/OiBzdHJpbmc7XG5cbiAgZW1haWxQbGFjZWhvbGRlcj86IHN0cmluZztcbiAgcGFzc3dvcmRQbGFjZWhvbGRlcj86IHN0cmluZztcblxuICBzdWJtaXRCdXR0b24/OiBzdHJpbmc7XG59XG5cbmV4cG9ydCBjbGFzcyBNQ0F1dGhNb2RlbCB7XG4gIGVtYWlsPzogc3RyaW5nfG51bGw7XG4gIHBhc3N3b3JkPzogc3RyaW5nfG51bGw7XG59XG4iLCI8ZGl2IGNsYXNzPVwibWMtYXV0aC1iYXNpYy1jb250YWluZXJcIj5cbiAgPHAtY2FyZCBbaGVhZGVyXT1cImNvbmZpZy50aXRsZSA/PyAnTG9nIGluJ1wiIFtzdWJoZWFkZXJdPVwiY29uZmlnLnN1YnRpdGxlID8/ICdQbGVhc2UgZW50ZXIgeW91ciBkZXRhaWxzJ1wiIFtzdHlsZV09XCJ7IHdpZHRoOiAnNTAwcHgnLCAnbWF4LXdpZHRoJzogJzUwMHB4JyB9XCI+XG5cbiAgICA8ZGl2IGNsYXNzPVwiXCIgW2Zvcm1Hcm91cF09XCJncm91cFwiPlxuICAgICAgPHAtaWNvbkZpZWxkIGljb25Qb3NpdGlvbj1cImxlZnRcIj5cbiAgICAgICAgPHAtaW5wdXRJY29uIHN0eWxlQ2xhc3M9XCJwaSBwaS1lbnZlbG9wZVwiIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwidGV4dFwiIHBJbnB1dFRleHQgW3BsYWNlaG9sZGVyXT1cImNvbmZpZy5lbWFpbFBsYWNlaG9sZGVyID8/ICdFbWFpbCdcIiBmb3JtQ29udHJvbE5hbWU9XCJlbWFpbFwiIC8+XG4gICAgICA8L3AtaWNvbkZpZWxkPlxuXG4gICAgICA8YnIvPjxici8+XG5cbiAgICAgIDxwLWljb25GaWVsZCBpY29uUG9zaXRpb249XCJsZWZ0XCI+XG4gICAgICAgIDxwLWlucHV0SWNvbiBzdHlsZUNsYXNzPVwicGkgcGktbG9ja1wiIC8+XG4gICAgICAgIDxpbnB1dCB0eXBlPVwicGFzc3dvcmRcIiBwUGFzc3dvcmQgW3BsYWNlaG9sZGVyXT1cImNvbmZpZy5wYXNzd29yZFBsYWNlaG9sZGVyID8/ICdQYXNzd29yZCdcIiBbZmVlZGJhY2tdPVwiZmFsc2VcIiB0b2dnbGVNYXNrPVwidHJ1ZVwiIGZvcm1Db250cm9sTmFtZT1cInBhc3N3b3JkXCIgLz5cbiAgICAgIDwvcC1pY29uRmllbGQ+XG5cbiAgICAgIDxwLW1lc3NhZ2VzIC8+XG4gICAgPC9kaXY+XG5cbiAgICA8bmctdGVtcGxhdGUgcFRlbXBsYXRlPVwiZm9vdGVyXCI+XG4gICAgICA8ZGl2IGNsYXNzPVwiZmxleCBnYXAtMyBtdC0xXCI+XG4gICAgICAgIDxwLWJ1dHRvbiBbbGFiZWxdPVwiY29uZmlnLnN1Ym1pdEJ1dHRvbiA/PyAnTG9nIGluJ1wiIFtzdHlsZV09XCJ7IHdpZHRoOiAnMTAwJScgfVwiIChjbGljayk9XCJvbkNsaWNrU3VibWl0KClcIiBbZGlzYWJsZWRdPVwiZ3JvdXAuaW52YWxpZCB8fCBpc1NlbmRpbmdcIiAvPlxuICAgICAgPC9kaXY+XG4gICAgPC9uZy10ZW1wbGF0ZT5cbiAgPC9wLWNhcmQ+XG48L2Rpdj5cbiJdfQ==
@@ -0,0 +1,46 @@
1
+ import { Injectable, signal } from '@angular/core';
2
+ import { map } from 'rxjs';
3
+ import * as i0 from "@angular/core";
4
+ import * as i1 from "@ngx-pwa/local-storage";
5
+ export const MC_AUTH_KEY_STORAGE_TOKEN = 'mc.auth.storage';
6
+ export class MCAuthenticationService {
7
+ storage;
8
+ isLogged = signal(false);
9
+ constructor(storage) {
10
+ this.storage = storage;
11
+ this.initialize();
12
+ }
13
+ saveUser(user) {
14
+ return this.storage.set(MC_AUTH_KEY_STORAGE_TOKEN, JSON.stringify(user), { type: 'string' });
15
+ }
16
+ getUser() {
17
+ return this.storage.get(MC_AUTH_KEY_STORAGE_TOKEN, { type: 'string' })
18
+ .pipe(map(data => {
19
+ if (data == undefined || data == '') {
20
+ return;
21
+ }
22
+ return JSON.parse(data);
23
+ }));
24
+ }
25
+ removeUser() {
26
+ return this.storage.delete(MC_AUTH_KEY_STORAGE_TOKEN);
27
+ }
28
+ initialize() {
29
+ this.getUser()
30
+ .subscribe(user => {
31
+ if (user == undefined) {
32
+ return;
33
+ }
34
+ this.isLogged.update(res => true);
35
+ });
36
+ }
37
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MCAuthenticationService, deps: [{ token: i1.StorageMap }], target: i0.ɵɵFactoryTarget.Injectable });
38
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MCAuthenticationService, providedIn: 'root' });
39
+ }
40
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MCAuthenticationService, decorators: [{
41
+ type: Injectable,
42
+ args: [{
43
+ providedIn: 'root'
44
+ }]
45
+ }], ctorParameters: () => [{ type: i1.StorageMap }] });
46
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aGVudGljYXRpb24uc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uLy4uLy4uL3Byb2plY3RzL21ja2l0L2F1dGgvc3JjL2xpYi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiJBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBR25ELE9BQU8sRUFBRSxHQUFHLEVBQWMsTUFBTSxNQUFNLENBQUM7OztBQUV2QyxNQUFNLENBQUMsTUFBTSx5QkFBeUIsR0FBRyxpQkFBaUIsQ0FBQztBQUszRCxNQUFNLE9BQU8sdUJBQXVCO0lBS3hCO0lBSFYsUUFBUSxHQUFHLE1BQU0sQ0FBVSxLQUFLLENBQUMsQ0FBQztJQUVsQyxZQUNVLE9BQW1CO1FBQW5CLFlBQU8sR0FBUCxPQUFPLENBQVk7UUFFM0IsSUFBSSxDQUFDLFVBQVUsRUFBRSxDQUFDO0lBQ3BCLENBQUM7SUFFRCxRQUFRLENBQUMsSUFBWTtRQUNuQixPQUFPLElBQUksQ0FBQyxPQUFPLENBQUMsR0FBRyxDQUFDLHlCQUF5QixFQUFFLElBQUksQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUMsQ0FBQztJQUMvRixDQUFDO0lBRUQsT0FBTztRQUNMLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMseUJBQXlCLEVBQUUsRUFBRSxJQUFJLEVBQUUsUUFBUSxFQUFFLENBQUM7YUFDckUsSUFBSSxDQUFDLEdBQUcsQ0FBQyxJQUFJLENBQUMsRUFBRTtZQUNmLElBQUcsSUFBSSxJQUFJLFNBQVMsSUFBRSxJQUFJLElBQUksRUFBRSxFQUFDLENBQUM7Z0JBQ2hDLE9BQU87WUFDVCxDQUFDO1lBQ0QsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxDQUFDO1FBQzFCLENBQUMsQ0FBQyxDQUFDLENBQUM7SUFDTixDQUFDO0lBRUQsVUFBVTtRQUNSLE9BQU8sSUFBSSxDQUFDLE9BQU8sQ0FBQyxNQUFNLENBQUMseUJBQXlCLENBQUMsQ0FBQztJQUN4RCxDQUFDO0lBRUQsVUFBVTtRQUNSLElBQUksQ0FBQyxPQUFPLEVBQUU7YUFDYixTQUFTLENBQUMsSUFBSSxDQUFDLEVBQUU7WUFDaEIsSUFBRyxJQUFJLElBQUksU0FBUyxFQUFDLENBQUM7Z0JBQ3BCLE9BQU87WUFDVCxDQUFDO1lBRUQsSUFBSSxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsR0FBRyxDQUFDLEVBQUUsQ0FBQyxJQUFJLENBQUMsQ0FBQztRQUNwQyxDQUFDLENBQUMsQ0FBQztJQUNMLENBQUM7dUdBckNVLHVCQUF1QjsyR0FBdkIsdUJBQXVCLGNBRnRCLE1BQU07OzJGQUVQLHVCQUF1QjtrQkFIbkMsVUFBVTttQkFBQztvQkFDVixVQUFVLEVBQUUsTUFBTTtpQkFDbkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlLCBzaWduYWwgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcbmltcG9ydCB7IFN0b3JhZ2VNYXAgfSBmcm9tICdAbmd4LXB3YS9sb2NhbC1zdG9yYWdlJztcbmltcG9ydCB7IE1DVXNlciB9IGZyb20gJy4uL2VudGl0aWVzL21jLXVzZXInO1xuaW1wb3J0IHsgbWFwLCBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XG5cbmV4cG9ydCBjb25zdCBNQ19BVVRIX0tFWV9TVE9SQUdFX1RPS0VOID0gJ21jLmF1dGguc3RvcmFnZSc7XG5cbkBJbmplY3RhYmxlKHtcbiAgcHJvdmlkZWRJbjogJ3Jvb3QnXG59KVxuZXhwb3J0IGNsYXNzIE1DQXV0aGVudGljYXRpb25TZXJ2aWNlIHtcblxuICBpc0xvZ2dlZCA9IHNpZ25hbDxib29sZWFuPihmYWxzZSk7XG5cbiAgY29uc3RydWN0b3IoXG4gICAgcHJpdmF0ZSBzdG9yYWdlOiBTdG9yYWdlTWFwXG4gICkge1xuICAgIHRoaXMuaW5pdGlhbGl6ZSgpO1xuICB9XG5cbiAgc2F2ZVVzZXIodXNlcjogTUNVc2VyKTogT2JzZXJ2YWJsZTx1bmRlZmluZWQ+IHtcbiAgICByZXR1cm4gdGhpcy5zdG9yYWdlLnNldChNQ19BVVRIX0tFWV9TVE9SQUdFX1RPS0VOLCBKU09OLnN0cmluZ2lmeSh1c2VyKSwgeyB0eXBlOiAnc3RyaW5nJyB9KTtcbiAgfVxuXG4gIGdldFVzZXIoKTogT2JzZXJ2YWJsZTxNQ1VzZXJ8dW5kZWZpbmVkPiB7XG4gICAgcmV0dXJuIHRoaXMuc3RvcmFnZS5nZXQoTUNfQVVUSF9LRVlfU1RPUkFHRV9UT0tFTiwgeyB0eXBlOiAnc3RyaW5nJyB9KVxuICAgIC5waXBlKG1hcChkYXRhID0+IHtcbiAgICAgIGlmKGRhdGEgPT0gdW5kZWZpbmVkfHxkYXRhID09ICcnKXtcbiAgICAgICAgcmV0dXJuO1xuICAgICAgfVxuICAgICAgcmV0dXJuIEpTT04ucGFyc2UoZGF0YSk7XG4gICAgfSkpO1xuICB9XG5cbiAgcmVtb3ZlVXNlcigpOiBPYnNlcnZhYmxlPGFueT4ge1xuICAgIHJldHVybiB0aGlzLnN0b3JhZ2UuZGVsZXRlKE1DX0FVVEhfS0VZX1NUT1JBR0VfVE9LRU4pO1xuICB9XG5cbiAgaW5pdGlhbGl6ZSgpIHtcbiAgICB0aGlzLmdldFVzZXIoKVxuICAgIC5zdWJzY3JpYmUodXNlciA9PiB7XG4gICAgICBpZih1c2VyID09IHVuZGVmaW5lZCl7XG4gICAgICAgIHJldHVybjtcbiAgICAgIH1cblxuICAgICAgdGhpcy5pc0xvZ2dlZC51cGRhdGUocmVzID0+IHRydWUpO1xuICAgIH0pO1xuICB9XG59XG4iXX0=
@@ -1,8 +1,24 @@
1
1
  /*
2
2
  * Public API Surface of auth
3
3
  */
4
+ /**
5
+ * Entities
6
+ */
7
+ export * from './lib/entities/mc-user';
8
+ /**
9
+ * Services
10
+ */
11
+ export * from './lib/services/authentication.service';
12
+ /**
13
+ * Interceptors
14
+ */
15
+ export * from './lib/interceptors/auth.interceptor';
16
+ /**
17
+ * Guards
18
+ */
19
+ export * from './lib/guards/auth.guard';
4
20
  /**
5
21
  * Pages
6
22
  */
7
23
  export * from './lib/pages/auth-basic/auth-basic.component';
8
- //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21ja2l0L2F1dGgvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSDs7R0FFRztBQUNILGNBQWMsNkNBQTZDLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKlxuICogUHVibGljIEFQSSBTdXJmYWNlIG9mIGF1dGhcbiAqL1xuXG4vKipcbiAqIFBhZ2VzXG4gKi9cbmV4cG9ydCAqIGZyb20gJy4vbGliL3BhZ2VzL2F1dGgtYmFzaWMvYXV0aC1iYXNpYy5jb21wb25lbnQnO1xuIl19
24
+ //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljLWFwaS5qcyIsInNvdXJjZVJvb3QiOiIiLCJzb3VyY2VzIjpbIi4uLy4uLy4uLy4uL3Byb2plY3RzL21ja2l0L2F1dGgvc3JjL3B1YmxpYy1hcGkudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6IkFBQUE7O0dBRUc7QUFFSDs7R0FFRztBQUNILGNBQWMsd0JBQXdCLENBQUM7QUFFdkM7O0dBRUc7QUFDSCxjQUFjLHVDQUF1QyxDQUFDO0FBRXREOztHQUVHO0FBQ0gsY0FBYyxxQ0FBcUMsQ0FBQztBQUVwRDs7R0FFRztBQUNILGNBQWMseUJBQXlCLENBQUM7QUFFeEM7O0dBRUc7QUFDSCxjQUFjLDZDQUE2QyxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiLypcbiAqIFB1YmxpYyBBUEkgU3VyZmFjZSBvZiBhdXRoXG4gKi9cblxuLyoqXG4gKiBFbnRpdGllc1xuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9lbnRpdGllcy9tYy11c2VyJztcblxuLyoqXG4gKiBTZXJ2aWNlc1xuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9zZXJ2aWNlcy9hdXRoZW50aWNhdGlvbi5zZXJ2aWNlJztcblxuLyoqXG4gKiBJbnRlcmNlcHRvcnNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvaW50ZXJjZXB0b3JzL2F1dGguaW50ZXJjZXB0b3InO1xuXG4vKipcbiAqIEd1YXJkc1xuICovXG5leHBvcnQgKiBmcm9tICcuL2xpYi9ndWFyZHMvYXV0aC5ndWFyZCc7XG5cbi8qKlxuICogUGFnZXNcbiAqL1xuZXhwb3J0ICogZnJvbSAnLi9saWIvcGFnZXMvYXV0aC1iYXNpYy9hdXRoLWJhc2ljLmNvbXBvbmVudCc7XG4iXX0=
@@ -1,8 +1,12 @@
1
1
  import * as i0 from '@angular/core';
2
- import { EventEmitter, Component, Input, Output } from '@angular/core';
2
+ import { signal, Injectable, InjectionToken, inject, EventEmitter, Component, Input, Output } from '@angular/core';
3
+ import { map, switchMap, tap, catchError } from 'rxjs';
4
+ import * as i1 from '@ngx-pwa/local-storage';
5
+ import { HttpResponse, HttpErrorResponse } from '@angular/common/http';
6
+ import { Router, RedirectCommand } from '@angular/router';
3
7
  import * as i4 from 'primeng/card';
4
8
  import { CardModule } from 'primeng/card';
5
- import * as i2 from 'primeng/button';
9
+ import * as i3 from 'primeng/button';
6
10
  import { ButtonModule } from 'primeng/button';
7
11
  import * as i5 from 'primeng/iconfield';
8
12
  import { IconFieldModule } from 'primeng/iconfield';
@@ -12,30 +16,168 @@ import * as i7 from 'primeng/inputtext';
12
16
  import { InputTextModule } from 'primeng/inputtext';
13
17
  import * as i8 from 'primeng/password';
14
18
  import { PasswordModule } from 'primeng/password';
15
- import * as i1 from '@angular/forms';
19
+ import * as i2 from '@angular/forms';
16
20
  import { FormGroup, FormControl, Validators, FormsModule, ReactiveFormsModule } from '@angular/forms';
17
- import * as i3 from 'primeng/api';
21
+ import * as i9 from 'primeng/messages';
22
+ import { MessagesModule } from 'primeng/messages';
23
+ import * as i1$1 from 'primeng/api';
24
+ import { MessageService } from 'primeng/api';
25
+
26
+ class MCUser {
27
+ static STATUS_INACTIVE = 0;
28
+ static STATUS_ACTIVE = 1;
29
+ static STATUS_SUSPENDED = 2;
30
+ id;
31
+ firstname = '';
32
+ lastname = '';
33
+ email = '';
34
+ photo = '';
35
+ role = 0;
36
+ status = 0;
37
+ created_at = '';
38
+ token_type = 'bearer';
39
+ access_token = '';
40
+ }
41
+
42
+ const MC_AUTH_KEY_STORAGE_TOKEN = 'mc.auth.storage';
43
+ class MCAuthenticationService {
44
+ storage;
45
+ isLogged = signal(false);
46
+ constructor(storage) {
47
+ this.storage = storage;
48
+ this.initialize();
49
+ }
50
+ saveUser(user) {
51
+ return this.storage.set(MC_AUTH_KEY_STORAGE_TOKEN, JSON.stringify(user), { type: 'string' });
52
+ }
53
+ getUser() {
54
+ return this.storage.get(MC_AUTH_KEY_STORAGE_TOKEN, { type: 'string' })
55
+ .pipe(map(data => {
56
+ if (data == undefined || data == '') {
57
+ return;
58
+ }
59
+ return JSON.parse(data);
60
+ }));
61
+ }
62
+ removeUser() {
63
+ return this.storage.delete(MC_AUTH_KEY_STORAGE_TOKEN);
64
+ }
65
+ initialize() {
66
+ this.getUser()
67
+ .subscribe(user => {
68
+ if (user == undefined) {
69
+ return;
70
+ }
71
+ this.isLogged.update(res => true);
72
+ });
73
+ }
74
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MCAuthenticationService, deps: [{ token: i1.StorageMap }], target: i0.ɵɵFactoryTarget.Injectable });
75
+ static ɵprov = i0.ɵɵngDeclareInjectable({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MCAuthenticationService, providedIn: 'root' });
76
+ }
77
+ i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MCAuthenticationService, decorators: [{
78
+ type: Injectable,
79
+ args: [{
80
+ providedIn: 'root'
81
+ }]
82
+ }], ctorParameters: () => [{ type: i1.StorageMap }] });
83
+
84
+ const MC_AUTH_CONFIG = new InjectionToken('mc.auth');
85
+ class MCAuthConfig {
86
+ baseUrl = '';
87
+ }
88
+
89
+ const authInterceptor = (req, next) => {
90
+ const config = inject(MC_AUTH_CONFIG);
91
+ const authService = inject(MCAuthenticationService);
92
+ if (req.url.indexOf(config.baseUrl) == -1) {
93
+ return next(req);
94
+ }
95
+ return authService.getUser()
96
+ .pipe(switchMap(user => {
97
+ if (user == undefined) {
98
+ return next(req);
99
+ }
100
+ return next(req.clone({
101
+ headers: req.headers.set('Authorization', `Bearer ${user.access_token}`)
102
+ }));
103
+ }), tap(event => {
104
+ if (event instanceof HttpResponse && event.status == 401) {
105
+ authService.removeUser().subscribe(() => {
106
+ window.location.reload();
107
+ });
108
+ }
109
+ }), catchError(err => {
110
+ if (err instanceof HttpErrorResponse && err.status == 401) {
111
+ authService.removeUser().subscribe(() => {
112
+ window.location.reload();
113
+ });
114
+ }
115
+ throw err;
116
+ }));
117
+ };
118
+
119
+ const mcAuthGuard = (route, state) => {
120
+ const router = inject(Router);
121
+ const authService = inject(MCAuthenticationService);
122
+ let paramRedirect = window.location.pathname;
123
+ if (paramRedirect.includes('auth/login')) {
124
+ paramRedirect = '';
125
+ }
126
+ return authService.getUser()
127
+ .pipe(map(user => {
128
+ if (user == undefined) {
129
+ const loginPath = router.parseUrl("/login");
130
+ loginPath.queryParams = {
131
+ redirect: paramRedirect
132
+ };
133
+ return new RedirectCommand(loginPath, { skipLocationChange: true });
134
+ }
135
+ return true;
136
+ }));
137
+ };
18
138
 
19
139
  class MCAuthBasicComponent {
140
+ messageService;
20
141
  config;
21
142
  submit = new EventEmitter();
22
143
  group = new FormGroup({
23
144
  email: new FormControl('', [Validators.required, Validators.email]),
24
145
  password: new FormControl('', Validators.required)
25
146
  });
147
+ isSending = false;
148
+ constructor(messageService) {
149
+ this.messageService = messageService;
150
+ }
26
151
  onClickSubmit() {
152
+ this.clearMessages();
27
153
  let obj = new MCAuthModel();
28
154
  obj.email = this.group.get('email')?.value;
29
155
  obj.password = this.group.get('password')?.value;
156
+ this.showLoading();
30
157
  this.submit.emit(obj);
31
158
  }
32
- static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MCAuthBasicComponent, deps: [], target: i0.ɵɵFactoryTarget.Component });
33
- static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: MCAuthBasicComponent, isStandalone: true, selector: "mc-auth-basic", inputs: { config: "config" }, outputs: { submit: "submit" }, ngImport: i0, template: "<div class=\"mc-auth-basic-container\">\n <p-card [header]=\"config.title ?? 'Log in'\" [subheader]=\"config.subtitle ?? 'Please enter your details'\" [style]=\"{ width: '500px', 'max-width': '500px' }\">\n\n <div class=\"\" [formGroup]=\"group\">\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-envelope\" />\n <input type=\"text\" pInputText [placeholder]=\"config.emailPlaceholder ?? 'Email'\" formControlName=\"email\" />\n </p-iconField>\n\n <br/><br/>\n\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-lock\" />\n <input type=\"text\" pPassword [placeholder]=\"config.passwordPlaceholder ?? 'Password'\" [feedback]=\"false\" toggleMask=\"true\" formControlName=\"password\" />\n </p-iconField>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex gap-3 mt-1\">\n <p-button [label]=\"config.submitButton ?? 'Log in'\" [style]=\"{ width: '100%' }\" (click)=\"onClickSubmit()\" [disabled]=\"group.invalid\" />\n </div>\n </ng-template>\n </p-card>\n</div>\n", styles: [".mc-auth-basic-container{display:flex;justify-content:center;min-height:100%;align-items:center}p-iconField input{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i1.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i1.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i1.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i1.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i1.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i2.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i3.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: CardModule }, { kind: "component", type: i4.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "ngmodule", type: IconFieldModule }, { kind: "component", type: i5.IconField, selector: "p-iconField", inputs: ["iconPosition"] }, { kind: "ngmodule", type: InputIconModule }, { kind: "component", type: i6.InputIcon, selector: "p-inputIcon", inputs: ["styleClass"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i7.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: PasswordModule }, { kind: "directive", type: i8.PasswordDirective, selector: "[pPassword]", inputs: ["promptLabel", "weakLabel", "mediumLabel", "strongLabel", "feedback", "showPassword", "variant"] }] });
159
+ showSuccessMessage(message) {
160
+ this.messageService.add({ severity: 'success', summary: message });
161
+ }
162
+ showErrorMessage(message) {
163
+ this.messageService.add({ severity: 'error', summary: message });
164
+ }
165
+ clearMessages() {
166
+ this.messageService.clear();
167
+ }
168
+ showLoading() {
169
+ this.isSending = true;
170
+ }
171
+ hideLoading() {
172
+ this.isSending = false;
173
+ }
174
+ static ɵfac = i0.ɵɵngDeclareFactory({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MCAuthBasicComponent, deps: [{ token: i1$1.MessageService }], target: i0.ɵɵFactoryTarget.Component });
175
+ static ɵcmp = i0.ɵɵngDeclareComponent({ minVersion: "14.0.0", version: "18.1.0", type: MCAuthBasicComponent, isStandalone: true, selector: "mc-auth-basic", inputs: { config: "config" }, outputs: { submit: "submit" }, providers: [MessageService], ngImport: i0, template: "<div class=\"mc-auth-basic-container\">\n <p-card [header]=\"config.title ?? 'Log in'\" [subheader]=\"config.subtitle ?? 'Please enter your details'\" [style]=\"{ width: '500px', 'max-width': '500px' }\">\n\n <div class=\"\" [formGroup]=\"group\">\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-envelope\" />\n <input type=\"text\" pInputText [placeholder]=\"config.emailPlaceholder ?? 'Email'\" formControlName=\"email\" />\n </p-iconField>\n\n <br/><br/>\n\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-lock\" />\n <input type=\"password\" pPassword [placeholder]=\"config.passwordPlaceholder ?? 'Password'\" [feedback]=\"false\" toggleMask=\"true\" formControlName=\"password\" />\n </p-iconField>\n\n <p-messages />\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex gap-3 mt-1\">\n <p-button [label]=\"config.submitButton ?? 'Log in'\" [style]=\"{ width: '100%' }\" (click)=\"onClickSubmit()\" [disabled]=\"group.invalid || isSending\" />\n </div>\n </ng-template>\n </p-card>\n</div>\n", styles: [".mc-auth-basic-container{display:flex;justify-content:center;min-height:100%;align-items:center}p-iconField input{width:100%}\n"], dependencies: [{ kind: "ngmodule", type: FormsModule }, { kind: "directive", type: i2.DefaultValueAccessor, selector: "input:not([type=checkbox])[formControlName],textarea[formControlName],input:not([type=checkbox])[formControl],textarea[formControl],input:not([type=checkbox])[ngModel],textarea[ngModel],[ngDefaultControl]" }, { kind: "directive", type: i2.NgControlStatus, selector: "[formControlName],[ngModel],[formControl]" }, { kind: "directive", type: i2.NgControlStatusGroup, selector: "[formGroupName],[formArrayName],[ngModelGroup],[formGroup],form:not([ngNoForm]),[ngForm]" }, { kind: "ngmodule", type: ReactiveFormsModule }, { kind: "directive", type: i2.FormGroupDirective, selector: "[formGroup]", inputs: ["formGroup"], outputs: ["ngSubmit"], exportAs: ["ngForm"] }, { kind: "directive", type: i2.FormControlName, selector: "[formControlName]", inputs: ["formControlName", "disabled", "ngModel"], outputs: ["ngModelChange"] }, { kind: "ngmodule", type: ButtonModule }, { kind: "component", type: i3.Button, selector: "p-button", inputs: ["type", "iconPos", "icon", "badge", "label", "disabled", "loading", "loadingIcon", "raised", "rounded", "text", "plain", "severity", "outlined", "link", "tabindex", "size", "style", "styleClass", "badgeClass", "ariaLabel", "autofocus"], outputs: ["onClick", "onFocus", "onBlur"] }, { kind: "directive", type: i1$1.PrimeTemplate, selector: "[pTemplate]", inputs: ["type", "pTemplate"] }, { kind: "ngmodule", type: CardModule }, { kind: "component", type: i4.Card, selector: "p-card", inputs: ["header", "subheader", "style", "styleClass"] }, { kind: "ngmodule", type: IconFieldModule }, { kind: "component", type: i5.IconField, selector: "p-iconField", inputs: ["iconPosition"] }, { kind: "ngmodule", type: InputIconModule }, { kind: "component", type: i6.InputIcon, selector: "p-inputIcon", inputs: ["styleClass"] }, { kind: "ngmodule", type: InputTextModule }, { kind: "directive", type: i7.InputText, selector: "[pInputText]", inputs: ["variant"] }, { kind: "ngmodule", type: PasswordModule }, { kind: "directive", type: i8.PasswordDirective, selector: "[pPassword]", inputs: ["promptLabel", "weakLabel", "mediumLabel", "strongLabel", "feedback", "showPassword", "variant"] }, { kind: "ngmodule", type: MessagesModule }, { kind: "component", type: i9.Messages, selector: "p-messages", inputs: ["value", "closable", "style", "styleClass", "enableService", "key", "escape", "severity", "showTransitionOptions", "hideTransitionOptions"], outputs: ["valueChange", "onClose"] }] });
34
176
  }
35
177
  i0.ɵɵngDeclareClassMetadata({ minVersion: "12.0.0", version: "18.1.0", ngImport: i0, type: MCAuthBasicComponent, decorators: [{
36
178
  type: Component,
37
- args: [{ selector: 'mc-auth-basic', standalone: true, imports: [FormsModule, ReactiveFormsModule, ButtonModule, CardModule, IconFieldModule, InputIconModule, InputTextModule, PasswordModule], template: "<div class=\"mc-auth-basic-container\">\n <p-card [header]=\"config.title ?? 'Log in'\" [subheader]=\"config.subtitle ?? 'Please enter your details'\" [style]=\"{ width: '500px', 'max-width': '500px' }\">\n\n <div class=\"\" [formGroup]=\"group\">\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-envelope\" />\n <input type=\"text\" pInputText [placeholder]=\"config.emailPlaceholder ?? 'Email'\" formControlName=\"email\" />\n </p-iconField>\n\n <br/><br/>\n\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-lock\" />\n <input type=\"text\" pPassword [placeholder]=\"config.passwordPlaceholder ?? 'Password'\" [feedback]=\"false\" toggleMask=\"true\" formControlName=\"password\" />\n </p-iconField>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex gap-3 mt-1\">\n <p-button [label]=\"config.submitButton ?? 'Log in'\" [style]=\"{ width: '100%' }\" (click)=\"onClickSubmit()\" [disabled]=\"group.invalid\" />\n </div>\n </ng-template>\n </p-card>\n</div>\n", styles: [".mc-auth-basic-container{display:flex;justify-content:center;min-height:100%;align-items:center}p-iconField input{width:100%}\n"] }]
38
- }], propDecorators: { config: [{
179
+ args: [{ selector: 'mc-auth-basic', standalone: true, imports: [FormsModule, ReactiveFormsModule, ButtonModule, CardModule, IconFieldModule, InputIconModule, InputTextModule, PasswordModule, MessagesModule], providers: [MessageService], template: "<div class=\"mc-auth-basic-container\">\n <p-card [header]=\"config.title ?? 'Log in'\" [subheader]=\"config.subtitle ?? 'Please enter your details'\" [style]=\"{ width: '500px', 'max-width': '500px' }\">\n\n <div class=\"\" [formGroup]=\"group\">\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-envelope\" />\n <input type=\"text\" pInputText [placeholder]=\"config.emailPlaceholder ?? 'Email'\" formControlName=\"email\" />\n </p-iconField>\n\n <br/><br/>\n\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-lock\" />\n <input type=\"password\" pPassword [placeholder]=\"config.passwordPlaceholder ?? 'Password'\" [feedback]=\"false\" toggleMask=\"true\" formControlName=\"password\" />\n </p-iconField>\n\n <p-messages />\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex gap-3 mt-1\">\n <p-button [label]=\"config.submitButton ?? 'Log in'\" [style]=\"{ width: '100%' }\" (click)=\"onClickSubmit()\" [disabled]=\"group.invalid || isSending\" />\n </div>\n </ng-template>\n </p-card>\n</div>\n", styles: [".mc-auth-basic-container{display:flex;justify-content:center;min-height:100%;align-items:center}p-iconField input{width:100%}\n"] }]
180
+ }], ctorParameters: () => [{ type: i1$1.MessageService }], propDecorators: { config: [{
39
181
  type: Input
40
182
  }], submit: [{
41
183
  type: Output
@@ -56,12 +198,12 @@ class MCAuthModel {
56
198
  * Public API Surface of auth
57
199
  */
58
200
  /**
59
- * Pages
201
+ * Entities
60
202
  */
61
203
 
62
204
  /**
63
205
  * Generated bundle index. Do not edit.
64
206
  */
65
207
 
66
- export { MCAuthBasicComponent, MCAuthBasicConfig, MCAuthModel };
208
+ export { MCAuthBasicComponent, MCAuthBasicConfig, MCAuthModel, MCAuthenticationService, MCUser, MC_AUTH_KEY_STORAGE_TOKEN, authInterceptor, mcAuthGuard };
67
209
  //# sourceMappingURL=mckit-auth.mjs.map
@@ -1 +1 @@
1
- {"version":3,"file":"mckit-auth.mjs","sources":["../../../../projects/mckit/auth/src/lib/pages/auth-basic/auth-basic.component.ts","../../../../projects/mckit/auth/src/lib/pages/auth-basic/auth-basic.component.html","../../../../projects/mckit/auth/src/public-api.ts","../../../../projects/mckit/auth/src/mckit-auth.ts"],"sourcesContent":["import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CardModule } from 'primeng/card';\nimport { ButtonModule } from 'primeng/button';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { PasswordModule } from 'primeng/password';\nimport { FormGroup, FormsModule, ReactiveFormsModule, FormControl, Validators } from '@angular/forms';\n\n\n\n@Component({\n selector: 'mc-auth-basic',\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, ButtonModule, CardModule, IconFieldModule, InputIconModule, InputTextModule, PasswordModule],\n templateUrl: './auth-basic.component.html',\n styleUrl: './auth-basic.component.scss'\n})\nexport class MCAuthBasicComponent {\n @Input() config!: MCAuthBasicConfig;\n @Output() submit = new EventEmitter<MCAuthModel>();\n\n group = new FormGroup({\n email: new FormControl<string>('', [Validators.required, Validators.email]),\n password: new FormControl<string>('', Validators.required)\n });\n\n onClickSubmit() {\n let obj = new MCAuthModel();\n obj.email = this.group.get('email')?.value;\n obj.password = this.group.get('password')?.value;\n\n this.submit.emit(obj);\n }\n}\n\nexport class MCAuthBasicConfig {\n title?: string;\n subtitle?: string;\n\n emailPlaceholder?: string;\n passwordPlaceholder?: string;\n\n submitButton?: string;\n}\n\nexport class MCAuthModel {\n email?: string|null;\n password?: string|null;\n}\n","<div class=\"mc-auth-basic-container\">\n <p-card [header]=\"config.title ?? 'Log in'\" [subheader]=\"config.subtitle ?? 'Please enter your details'\" [style]=\"{ width: '500px', 'max-width': '500px' }\">\n\n <div class=\"\" [formGroup]=\"group\">\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-envelope\" />\n <input type=\"text\" pInputText [placeholder]=\"config.emailPlaceholder ?? 'Email'\" formControlName=\"email\" />\n </p-iconField>\n\n <br/><br/>\n\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-lock\" />\n <input type=\"text\" pPassword [placeholder]=\"config.passwordPlaceholder ?? 'Password'\" [feedback]=\"false\" toggleMask=\"true\" formControlName=\"password\" />\n </p-iconField>\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex gap-3 mt-1\">\n <p-button [label]=\"config.submitButton ?? 'Log in'\" [style]=\"{ width: '100%' }\" (click)=\"onClickSubmit()\" [disabled]=\"group.invalid\" />\n </div>\n </ng-template>\n </p-card>\n</div>\n","/*\n * Public API Surface of auth\n */\n\n/**\n * Pages\n */\nexport * from './lib/pages/auth-basic/auth-basic.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"mckit-auth.mjs","sources":["../../../../projects/mckit/auth/src/lib/entities/mc-user.ts","../../../../projects/mckit/auth/src/lib/services/authentication.service.ts","../../../../projects/mckit/auth/src/lib/entities/mc-auth-config.ts","../../../../projects/mckit/auth/src/lib/interceptors/auth.interceptor.ts","../../../../projects/mckit/auth/src/lib/guards/auth.guard.ts","../../../../projects/mckit/auth/src/lib/pages/auth-basic/auth-basic.component.ts","../../../../projects/mckit/auth/src/lib/pages/auth-basic/auth-basic.component.html","../../../../projects/mckit/auth/src/public-api.ts","../../../../projects/mckit/auth/src/mckit-auth.ts"],"sourcesContent":["export class MCUser {\n static STATUS_INACTIVE = 0;\n static STATUS_ACTIVE = 1;\n static STATUS_SUSPENDED = 2;\n\n public id?: number|string;\n public firstname: string = '';\n public lastname: string = '';\n public email: string = '';\n public photo?: string = '';\n public role: number = 0;\n public status: number = 0;\n public created_at: string = '';\n\n public token_type: string = 'bearer';\n public access_token: string = '';\n}\n","import { Injectable, signal } from '@angular/core';\nimport { StorageMap } from '@ngx-pwa/local-storage';\nimport { MCUser } from '../entities/mc-user';\nimport { map, Observable } from 'rxjs';\n\nexport const MC_AUTH_KEY_STORAGE_TOKEN = 'mc.auth.storage';\n\n@Injectable({\n providedIn: 'root'\n})\nexport class MCAuthenticationService {\n\n isLogged = signal<boolean>(false);\n\n constructor(\n private storage: StorageMap\n ) {\n this.initialize();\n }\n\n saveUser(user: MCUser): Observable<undefined> {\n return this.storage.set(MC_AUTH_KEY_STORAGE_TOKEN, JSON.stringify(user), { type: 'string' });\n }\n\n getUser(): Observable<MCUser|undefined> {\n return this.storage.get(MC_AUTH_KEY_STORAGE_TOKEN, { type: 'string' })\n .pipe(map(data => {\n if(data == undefined||data == ''){\n return;\n }\n return JSON.parse(data);\n }));\n }\n\n removeUser(): Observable<any> {\n return this.storage.delete(MC_AUTH_KEY_STORAGE_TOKEN);\n }\n\n initialize() {\n this.getUser()\n .subscribe(user => {\n if(user == undefined){\n return;\n }\n\n this.isLogged.update(res => true);\n });\n }\n}\n","import { InjectionToken } from \"@angular/core\";\n\nexport const MC_AUTH_CONFIG = new InjectionToken<MCAuthConfig>('mc.auth');\n\nexport class MCAuthConfig {\n baseUrl: string = '';\n}\n","import { HttpErrorResponse, HttpInterceptorFn, HttpResponse } from '@angular/common/http';\nimport { inject } from '@angular/core';\nimport { MC_AUTH_CONFIG } from '../entities/mc-auth-config';\nimport { MCAuthenticationService } from '../services/authentication.service';\nimport { catchError, switchMap, tap } from 'rxjs';\n\nexport const authInterceptor: HttpInterceptorFn = (req, next) => {\n\n const config = inject(MC_AUTH_CONFIG);\n const authService = inject(MCAuthenticationService);\n\n if(req.url.indexOf(config.baseUrl) == -1){\n return next(req);\n }\n\n return authService.getUser()\n .pipe(\n\n switchMap(user => {\n\n if(user == undefined){\n return next(req);\n }\n\n return next(req.clone({\n headers: req.headers.set('Authorization', `Bearer ${user.access_token}`)\n }));\n\n }),\n tap(event => {\n\n if(event instanceof HttpResponse && event.status == 401){\n authService.removeUser().subscribe(() => {\n window.location.reload();\n });\n }\n\n }),\n catchError(err => {\n\n if(err instanceof HttpErrorResponse && err.status == 401){\n authService.removeUser().subscribe(() => {\n window.location.reload();\n });\n }\n\n throw err;\n }),\n\n\n );\n};\n","import { inject } from '@angular/core';\nimport { CanActivateFn, RedirectCommand, Router } from '@angular/router';\nimport { MCAuthenticationService } from '../services/authentication.service';\nimport { map } from 'rxjs';\n\nexport const mcAuthGuard: CanActivateFn = (route, state) => {\n const router = inject(Router);\n const authService = inject(MCAuthenticationService);\n\n let paramRedirect = window.location.pathname;\n if (paramRedirect.includes('auth/login')) {\n paramRedirect = '';\n }\n\n return authService.getUser()\n .pipe(map(user => {\n if(user == undefined){\n const loginPath = router.parseUrl(\"/login\");\n loginPath.queryParams = {\n redirect: paramRedirect\n };\n return new RedirectCommand(loginPath, { skipLocationChange: true });\n }\n\n return true;\n }));\n};\n","import { Component, EventEmitter, Input, Output } from '@angular/core';\nimport { CardModule } from 'primeng/card';\nimport { ButtonModule } from 'primeng/button';\nimport { IconFieldModule } from 'primeng/iconfield';\nimport { InputIconModule } from 'primeng/inputicon';\nimport { InputTextModule } from 'primeng/inputtext';\nimport { PasswordModule } from 'primeng/password';\nimport { FormGroup, FormsModule, ReactiveFormsModule, FormControl, Validators } from '@angular/forms';\nimport { MessagesModule } from 'primeng/messages';\nimport { MessageService } from 'primeng/api';\n\n\n\n@Component({\n selector: 'mc-auth-basic',\n standalone: true,\n imports: [FormsModule, ReactiveFormsModule, ButtonModule, CardModule, IconFieldModule, InputIconModule, InputTextModule, PasswordModule, MessagesModule],\n providers: [MessageService],\n templateUrl: './auth-basic.component.html',\n styleUrl: './auth-basic.component.scss'\n})\nexport class MCAuthBasicComponent {\n @Input() config!: MCAuthBasicConfig;\n @Output() submit = new EventEmitter<MCAuthModel>();\n\n group = new FormGroup({\n email: new FormControl<string>('', [Validators.required, Validators.email]),\n password: new FormControl<string>('', Validators.required)\n });\n\n isSending = false;\n\n constructor(\n private messageService: MessageService\n ) {}\n\n onClickSubmit() {\n this.clearMessages();\n\n let obj = new MCAuthModel();\n obj.email = this.group.get('email')?.value;\n obj.password = this.group.get('password')?.value;\n\n this.showLoading();\n this.submit.emit(obj);\n }\n\n showSuccessMessage(message: string) {\n this.messageService.add({ severity: 'success', summary: message});\n }\n\n showErrorMessage(message: string) {\n this.messageService.add({ severity: 'error', summary: message});\n }\n\n clearMessages() {\n this.messageService.clear();\n }\n\n showLoading() {\n this.isSending = true;\n }\n\n hideLoading() {\n this.isSending = false;\n }\n}\n\nexport class MCAuthBasicConfig {\n title?: string;\n subtitle?: string;\n\n emailPlaceholder?: string;\n passwordPlaceholder?: string;\n\n submitButton?: string;\n}\n\nexport class MCAuthModel {\n email?: string|null;\n password?: string|null;\n}\n","<div class=\"mc-auth-basic-container\">\n <p-card [header]=\"config.title ?? 'Log in'\" [subheader]=\"config.subtitle ?? 'Please enter your details'\" [style]=\"{ width: '500px', 'max-width': '500px' }\">\n\n <div class=\"\" [formGroup]=\"group\">\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-envelope\" />\n <input type=\"text\" pInputText [placeholder]=\"config.emailPlaceholder ?? 'Email'\" formControlName=\"email\" />\n </p-iconField>\n\n <br/><br/>\n\n <p-iconField iconPosition=\"left\">\n <p-inputIcon styleClass=\"pi pi-lock\" />\n <input type=\"password\" pPassword [placeholder]=\"config.passwordPlaceholder ?? 'Password'\" [feedback]=\"false\" toggleMask=\"true\" formControlName=\"password\" />\n </p-iconField>\n\n <p-messages />\n </div>\n\n <ng-template pTemplate=\"footer\">\n <div class=\"flex gap-3 mt-1\">\n <p-button [label]=\"config.submitButton ?? 'Log in'\" [style]=\"{ width: '100%' }\" (click)=\"onClickSubmit()\" [disabled]=\"group.invalid || isSending\" />\n </div>\n </ng-template>\n </p-card>\n</div>\n","/*\n * Public API Surface of auth\n */\n\n/**\n * Entities\n */\nexport * from './lib/entities/mc-user';\n\n/**\n * Services\n */\nexport * from './lib/services/authentication.service';\n\n/**\n * Interceptors\n */\nexport * from './lib/interceptors/auth.interceptor';\n\n/**\n * Guards\n */\nexport * from './lib/guards/auth.guard';\n\n/**\n * Pages\n */\nexport * from './lib/pages/auth-basic/auth-basic.component';\n","/**\n * Generated bundle index. Do not edit.\n */\n\nexport * from './public-api';\n"],"names":["i1"],"mappings":"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"}
@@ -0,0 +1,5 @@
1
+ import { InjectionToken } from "@angular/core";
2
+ export declare const MC_AUTH_CONFIG: InjectionToken<MCAuthConfig>;
3
+ export declare class MCAuthConfig {
4
+ baseUrl: string;
5
+ }
@@ -0,0 +1,15 @@
1
+ export declare class MCUser {
2
+ static STATUS_INACTIVE: number;
3
+ static STATUS_ACTIVE: number;
4
+ static STATUS_SUSPENDED: number;
5
+ id?: number | string;
6
+ firstname: string;
7
+ lastname: string;
8
+ email: string;
9
+ photo?: string;
10
+ role: number;
11
+ status: number;
12
+ created_at: string;
13
+ token_type: string;
14
+ access_token: string;
15
+ }
@@ -0,0 +1,2 @@
1
+ import { CanActivateFn } from '@angular/router';
2
+ export declare const mcAuthGuard: CanActivateFn;
@@ -0,0 +1,2 @@
1
+ import { HttpInterceptorFn } from '@angular/common/http';
2
+ export declare const authInterceptor: HttpInterceptorFn;
@@ -1,14 +1,23 @@
1
1
  import { EventEmitter } from '@angular/core';
2
2
  import { FormGroup, FormControl } from '@angular/forms';
3
+ import { MessageService } from 'primeng/api';
3
4
  import * as i0 from "@angular/core";
4
5
  export declare class MCAuthBasicComponent {
6
+ private messageService;
5
7
  config: MCAuthBasicConfig;
6
8
  submit: EventEmitter<MCAuthModel>;
7
9
  group: FormGroup<{
8
10
  email: FormControl<string | null>;
9
11
  password: FormControl<string | null>;
10
12
  }>;
13
+ isSending: boolean;
14
+ constructor(messageService: MessageService);
11
15
  onClickSubmit(): void;
16
+ showSuccessMessage(message: string): void;
17
+ showErrorMessage(message: string): void;
18
+ clearMessages(): void;
19
+ showLoading(): void;
20
+ hideLoading(): void;
12
21
  static ɵfac: i0.ɵɵFactoryDeclaration<MCAuthBasicComponent, never>;
13
22
  static ɵcmp: i0.ɵɵComponentDeclaration<MCAuthBasicComponent, "mc-auth-basic", never, { "config": { "alias": "config"; "required": false; }; }, { "submit": "submit"; }, never, never, true, never>;
14
23
  }
@@ -0,0 +1,16 @@
1
+ import { StorageMap } from '@ngx-pwa/local-storage';
2
+ import { MCUser } from '../entities/mc-user';
3
+ import { Observable } from 'rxjs';
4
+ import * as i0 from "@angular/core";
5
+ export declare const MC_AUTH_KEY_STORAGE_TOKEN = "mc.auth.storage";
6
+ export declare class MCAuthenticationService {
7
+ private storage;
8
+ isLogged: import("@angular/core").WritableSignal<boolean>;
9
+ constructor(storage: StorageMap);
10
+ saveUser(user: MCUser): Observable<undefined>;
11
+ getUser(): Observable<MCUser | undefined>;
12
+ removeUser(): Observable<any>;
13
+ initialize(): void;
14
+ static ɵfac: i0.ɵɵFactoryDeclaration<MCAuthenticationService, never>;
15
+ static ɵprov: i0.ɵɵInjectableDeclaration<MCAuthenticationService>;
16
+ }
package/package.json CHANGED
@@ -1,10 +1,11 @@
1
1
  {
2
2
  "name": "@mckit/auth",
3
- "version": "18.0.2",
3
+ "version": "18.0.4",
4
4
  "peerDependencies": {
5
5
  "@angular/common": "^18.1.0",
6
6
  "@angular/core": "^18.1.0",
7
- "primeng": "^17.18.4"
7
+ "primeng": "^17.18.4",
8
+ "@ngx-pwa/local-storage": "^18.0.0"
8
9
  },
9
10
  "dependencies": {
10
11
  "tslib": "^2.3.0"
package/public-api.d.ts CHANGED
@@ -1,3 +1,19 @@
1
+ /**
2
+ * Entities
3
+ */
4
+ export * from './lib/entities/mc-user';
5
+ /**
6
+ * Services
7
+ */
8
+ export * from './lib/services/authentication.service';
9
+ /**
10
+ * Interceptors
11
+ */
12
+ export * from './lib/interceptors/auth.interceptor';
13
+ /**
14
+ * Guards
15
+ */
16
+ export * from './lib/guards/auth.guard';
1
17
  /**
2
18
  * Pages
3
19
  */