src/app/auth/authentication.service.ts
Servicio para realizar la autenticación y modificación de datos de usuarios.
Properties |
Methods |
|
Public editprofile | ||||||
editprofile(prof: Customers)
|
||||||
Defined in src/app/auth/authentication.service.ts:127
|
||||||
Edita los datos del perfil.
Parameters :
Returns :
Observable<any>
|
Private getToken |
getToken()
|
Defined in src/app/auth/authentication.service.ts:49
|
Obtiene el Token para la autenticación.
Returns :
string
|
getUser | ||||||
getUser(id: number)
|
||||||
Defined in src/app/auth/authentication.service.ts:144
|
||||||
Obtiene al usuario actual.
Parameters :
Returns :
Observable<Customers>
|
Public getUserDetails |
getUserDetails()
|
Defined in src/app/auth/authentication.service.ts:60
|
Obtiene los datos de un usuario.
Returns :
any
|
getUsers | ||||||
getUsers(id: number)
|
||||||
Defined in src/app/auth/authentication.service.ts:136
|
||||||
Obtiene a todos los usuarios.
Parameters :
Returns :
Observable<Customers[]>
|
Public isLoggedIn |
isLoggedIn()
|
Defined in src/app/auth/authentication.service.ts:76
|
Comprueba si el usuario esta logeado.
Returns :
boolean
|
Public login | ||||||
login(user: Customers)
|
||||||
Defined in src/app/auth/authentication.service.ts:98
|
||||||
Inicia sesión a un usuario.
Parameters :
Returns :
Observable<any>
|
Public logout |
logout()
|
Defined in src/app/auth/authentication.service.ts:118
|
Cierra la sesión.
Returns :
void
|
Public register | ||||||
register(user: Customers)
|
||||||
Defined in src/app/auth/authentication.service.ts:89
|
||||||
Registra a un usuario.
Parameters :
Returns :
Observable<any>
|
Private saveToken | ||||||
saveToken(token: string)
|
||||||
Defined in src/app/auth/authentication.service.ts:40
|
||||||
Guarda el valor del Token para la autenticación.
Parameters :
Returns :
void
|
uri |
Type : string
|
Default value : 'https://fixlab-backend.herokuapp.com/users'
|
Defined in src/app/auth/authentication.service.ts:30
|
URL al hosting del backend. |
import { Injectable } from '@angular/core'
import { HttpClient } from '@angular/common/http'
import { Observable, of } from 'rxjs'
import { map } from 'rxjs/operators'
import { Router } from '@angular/router'
import { Customers } from '../../models/customers';
/**
*@ignore
*/
interface TokenResponse {
token: string
}
/**
*Servicio para realizar la autenticación y modificación de datos de usuarios.
*/
@Injectable()
export class AuthenticationService {
/**
*@ignore
*/
private token: string
/**
*@ignore
*/
customer: Customers;
/**
*URL al hosting del backend.
*/
uri = 'https://fixlab-backend.herokuapp.com/users'
/**
*@ignore
*/
constructor(private http: HttpClient, private router: Router) {}
/**
*Guarda el valor del Token para la autenticación.
*/
private saveToken(token: string): void
{
localStorage.setItem('usertoken', token)
this.token = token
}
/**
*Obtiene el Token para la autenticación.
*/
private getToken(): string
{
if (!this.token) {
this.token = localStorage.getItem('usertoken')
}
return this.token
}
/**
*Obtiene los datos de un usuario.
*/
public getUserDetails()
{
const token = this.getToken()
let payload
if (token) {
payload = token.split('.')[1]
payload = window.atob(payload)
return JSON.parse(payload)
} else {
return null
}
}
/**
*Comprueba si el usuario esta logeado.
*/
public isLoggedIn(): boolean
{
const user = this.getUserDetails()
if (user) {
return user.exp > Date.now() / 1000
} else {
return false
}
}
/**
*Registra a un usuario.
*/
public register(user: Customers): Observable<any>
{
const url=` ${this.uri}/register`;
return this.http.post(url, user)
}
/**
*Inicia sesión a un usuario.
*/
public login(user: Customers): Observable<any>
{
const url=` ${this.uri}/login`;
const base = this.http.post(url, user)
const request = base.pipe(
map((data: TokenResponse) => {
if (data.token) {
this.saveToken(data.token)
}
return data
})
)
return request
}
/**
*Cierra la sesión.
*/
public logout(): void {
this.token = ''
window.localStorage.removeItem('usertoken')
this.router.navigateByUrl('/')
}
/**
*Edita los datos del perfil.
*/
public editprofile(prof:Customers): Observable<any>
{
const url=` ${this.uri}/update`;
return this.http.post(url, prof)
}
/**
*Obtiene a todos los usuarios.
*/
getUsers(id: number): Observable<Customers[]> {
const url = `${this.uri}/${id}`;
return this.http.get<Customers[]>(url);
}
/**
*Obtiene al usuario actual.
*/
getUser(id: number): Observable<Customers>
{
const url = `${this.uri}/profile/${id}`;
return this.http.get<Customers>(url);
}
}