juice-shop
60 строк · 2.3 Кб
1/*
2* Copyright (c) 2014-2024 Bjoern Kimminich & the OWASP Juice Shop contributors.
3* SPDX-License-Identifier: MIT
4*/
5
6import { Component, NgZone, type OnInit } from '@angular/core'
7import { UserService } from '../Services/user.service'
8import { ActivatedRoute, Router } from '@angular/router'
9import { CookieService } from 'ngx-cookie'
10import { ConfigurationService } from '../Services/configuration.service'
11import { SocketIoService } from '../Services/socket-io.service'
12
13@Component({
14selector: 'app-deluxe-user',
15templateUrl: './deluxe-user.component.html',
16styleUrls: ['./deluxe-user.component.scss']
17})
18
19export class DeluxeUserComponent implements OnInit {
20public membershipCost: number = 0
21public error: string = undefined
22public applicationName = 'OWASP Juice Shop'
23public logoSrc: string = 'assets/public/images/JuiceShop_Logo.png'
24
25constructor (private readonly router: Router, private readonly userService: UserService, private readonly cookieService: CookieService, private readonly configurationService: ConfigurationService, private readonly route: ActivatedRoute, private readonly ngZone: NgZone, private readonly io: SocketIoService) {
26}
27
28ngOnInit () {
29this.configurationService.getApplicationConfiguration().subscribe((config) => {
30const decalParam: string = this.route.snapshot.queryParams.testDecal // "Forgotten" test parameter to play with different stickers on the delivery box image
31if (config?.application) {
32if (config.application.name) {
33this.applicationName = config.application.name
34}
35if (config.application.logo) {
36let logo: string = config.application.logo
37
38if (logo.substring(0, 4) === 'http') {
39logo = decodeURIComponent(logo.substring(logo.lastIndexOf('/') + 1))
40}
41this.logoSrc = `assets/public/images/${decalParam || logo}`
42}
43}
44if (decalParam) {
45this.ngZone.runOutsideAngular(() => {
46this.io.socket().emit('verifySvgInjectionChallenge', decalParam)
47})
48}
49}, (err) => { console.log(err) })
50this.userService.deluxeStatus().subscribe((res) => {
51this.membershipCost = res.membershipCost
52}, (err) => {
53this.error = err.error.error
54})
55}
56
57upgradeToDeluxe () {
58this.ngZone.run(async () => await this.router.navigate(['/payment', 'deluxe']))
59}
60}
61