github.com/readium/readium-lcp-server@v0.0.0-20240101192032-6e95190e99f1/frontend/manage/app/components/user.service.ts (about)

     1  import { Injectable }    from '@angular/core';
     2  import { Headers, Http } from '@angular/http';
     3  import 'rxjs/add/operator/toPromise';
     4  import { User } from './user';
     5  import * as  jsSHA from 'jssha';
     6  
     7  declare var Config: any; //  this comes from the autogenerated config.js file
     8  @Injectable()
     9  export class UserService {
    10    private usersUrl = Config.frontend.url + '/users' ;  
    11    private headers = new Headers ({'Content-Type': 'application/json'});
    12  
    13    constructor (private http: Http) { }
    14    getUsers(): Promise<User[]> {
    15      return this.http.get(this.usersUrl)
    16        .toPromise()
    17        .then(function (response) {
    18          let users: User[] = [];
    19          for (let jsonUser of response.json()) {
    20            users[users.length] = {userID: jsonUser.userID, alias: jsonUser.alias, email: jsonUser.email, password: jsonUser.password};
    21          }
    22          return users;
    23        })
    24        .catch(this.handleError);
    25    }
    26  
    27    create(newAlias: string, newEmail: string, newPassword: string): Promise<User> {
    28      const jsSHAObject:jsSHA.jsSHA = new jsSHA("SHA-256","TEXT");
    29      jsSHAObject.update(newPassword);
    30      let hashedPassword =  jsSHAObject.getHash ("HEX");
    31      let user: User = {userID: null, alias: newAlias, email: newEmail, password:  hashedPassword};
    32      return this.http
    33        .put(this.usersUrl, JSON.stringify(user), {headers: this.headers})
    34        .toPromise()
    35        .then(function (response) {
    36            if (response.status === 201) {
    37              return user;
    38            } else {
    39              throw 'Error creating user ' + response.text;
    40            }
    41        })
    42        .catch(this.handleError);
    43    }
    44  
    45    delete(id: number): Promise<void> {
    46      const url = `${this.usersUrl}/${id}`;
    47      return this.http.delete(url, {headers: this.headers})
    48        .toPromise()
    49        .then(() => null)
    50        .catch(this.handleError);
    51    }
    52  
    53    private handleError(error: any): Promise<any> {
    54      console.error('An error occurred', error);
    55      return Promise.reject(error.message || error);
    56    }
    57    getUser(id: number): Promise<User> {
    58        return this.getUsers()
    59        .then(users => users.find(user => user.userID === id));
    60    }
    61    update(user: User, newPassword: string |undefined): Promise<User> {
    62      if ((user.password != newPassword) && newPassword!=undefined) {
    63         const jsSHAObject:jsSHA.jsSHA = new jsSHA("SHA-256","TEXT");
    64        jsSHAObject.update(newPassword);
    65        user.password =  jsSHAObject.getHash ("HEX");
    66      }
    67      const url = `${this.usersUrl}/${user.userID}`;
    68      return this.http
    69        .post(url, JSON.stringify(user), {headers: this.headers})
    70        .toPromise()
    71        .then(() => user)
    72        .catch(this.handleError);
    73    }
    74  
    75  }