school.home.ts 7.11 KB
Newer Older
1 2 3 4 5 6 7 8 9 10 11 12
import { Router, ActivatedRoute, Params } from "@angular/router";
import { OnInit, OnDestroy, Component } from "@angular/core";
import { LoginInfoActions } from "../actions/logininfo.actions";
import { ILoginInfo } from "../store/logininfo/logininfo.types";
import { LOGININFO_INITIAL_STATE } from "../store/logininfo/logininfo.initial-state";
import { NgRedux, select } from "ng2-redux";
import { BehaviorSubject, Subscription } from "rxjs/Rx";
import { IAppState } from "../store/store";
import { HelperDataService } from "../services/helper-data-service";
import { CookieService } from "ngx-cookie";
import { FormBuilder, FormGroup, FormControl, FormArray } from "@angular/forms";
import { API_ENDPOINT, API_ENDPOINT_PARAMS } from "../app.settings";
13 14

@Component({
15
    selector: "school-home",
16
    template: `
17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38
<div>
    <div *ngIf="errorCode != undefined && errorCode != ''" style="min-height: 300px;">
        <div [ngSwitch]="errorCode">
            <p class="text-danger" *ngSwitchCase="5001">Προέκυψε σφάλμα κατά την διαδικασία αυθεντικοποίησης σας.</p>
            <p class="text-danger" *ngSwitchCase="5002">Πρέπει να συνδεθείτε με λογαριασμό του Πανελλήνιου Σχολικού Δικτύου, για να χρησιμοποιήσετε την εφαρμογή.</p>
            <p class="text-danger" *ngSwitchCase="5003">Πρέπει να συνδεθείτε με τον επίσημο λογαριασμό μονάδας στο Πανελλήνιο Σχολικό Δίκτυο, για να χρησιμοποιήσετε την εφαρμογή.</p>
            <p class="text-danger" *ngSwitchCase="5004">Ο ρόλος που αντιστοιχεί στον λογαριασμό σας στο Πανελλήνιο Σχολικό Δίκτυο δεν επιτρέπεται να χρησιμοποιήσετε την εφαρμογή.</p>
            <p class="text-danger" *ngSwitchCase="5005">Προέκυψε σφάλμα κατά την διαδικασία αυθεντικοποίησης σας.</p>
            <p class="text-danger" *ngSwitchCase="6000">Προέκυψε σφάλμα κατά την διαδικασία αυθεντικοποίησης σας. <br/>Παρακαλώ συνδεθείτε χρησιμοποιώντας τα στοιχεία του επίσημου λογαριασμού που διαθέτει η μονάδα στο Πανελλήνιο Σχολικό Δίκτυο.</p>
            <p class="text-danger" *ngSwitchDefault>Προέκυψε σφάλμα {{ errorCode }}</p>
        </div>
        <div class="alert alert-danger" role="alert">Για να επαναλάβετε τη διαδικασία σύνδεσης πρέπει πρώτα να αποσυνδεθείτε.</div>
        <div class="row">
            <div class="col-sm-4">&nbsp;</div>
            <div class="col-sm-4">
                <button type="submit" class="btn btn-lg btn-block isclickable" (click)="casSignOut()">Αποσύνδεση</button>
            </div>
        </div>
    </div>
    <div *ngIf="errorCode == undefined || erroCode == ''">
        <form [formGroup]="formGroup" method = "POST" action="{{apiEndPoint}}/cas/login{{apiEndPointParams}}" #form>
            <!-- <input type="hidden" name="X-oauth-enabled" value="true"> -->
39 40
            <div *ngFor="let loginInfoToken$ of loginInfo$ | async; let i=index"></div>
            <div class="row" style="min-height: 300px; margin-top: 100px;">
41 42 43 44 45
                <div *ngIf="!authToken" class="col-md-8 offset-md-4">
                    <button type="submit" class="btn-primary btn-lg" (click)="form.submit()">
                    Είσοδος μέσω Π.Σ.Δ<span class="glyphicon glyphicon-menu-right"></span>
                    </button>
                </div>
46
            </div>
47 48 49 50
        </form>
    </div>
</div>
`
51 52
})

53
export default class SchoolHome implements OnInit, OnDestroy {
54 55
    public formGroup: FormGroup;
    private authToken: string;
56
    private errorCode: string;
57 58 59
    private authRole: string;
    private name: any;
    private xcsrftoken: any;
60 61
    private loginInfo$: BehaviorSubject<ILoginInfo>;
    private loginInfoSub: Subscription;
62
    private apiEndPoint = API_ENDPOINT;
63
    private apiEndPointParams = API_ENDPOINT_PARAMS;
64 65 66 67 68 69

    constructor(private fb: FormBuilder,
        private _ata: LoginInfoActions,
        private _ngRedux: NgRedux<IAppState>,
        private activatedRoute: ActivatedRoute,
        private _hds: HelperDataService,
70
        private router: Router,
71
        private _cookieService: CookieService
72
    ) {
73 74 75 76
        this.authToken = "";
        this.errorCode = "";
        this.authRole = "";
        this.name = "";
77
        this.loginInfo$ = new BehaviorSubject(LOGININFO_INITIAL_STATE);
78 79 80 81
        this.formGroup = this.fb.group({
        });
    };

82 83 84 85 86 87
    ngOnDestroy() {
        if (this.loginInfoSub)
            this.loginInfoSub.unsubscribe();
        this.loginInfo$.unsubscribe();
    };

88
    ngOnInit() {
89
        this.loginInfoSub = this._ngRedux.select(state => {
90
            if (state.loginInfo.size > 0) {
91
                state.loginInfo.reduce(({ }, loginInfoToken) => {
92 93
                    this.authToken = loginInfoToken.auth_token;
                    this.authRole = loginInfoToken.auth_role;
94
                    if (this.authToken && this.authToken.length > 0) {
95 96
                        if (this.authRole === "director") {
                            this.router.navigate(["/school/director-buttons"]);
97
                        }
98 99 100 101
                        else if (this.authRole === "pde")
                            this.router.navigate(["/school/perfecture-view"]);
                        else if (this.authRole === "dide")
                            this.router.navigate(["/school/eduadmin-view"]);
102
                    }
103 104 105 106 107
                    return loginInfoToken;
                }, {});
            }

            return state.loginInfo;
108
        }).subscribe(this.loginInfo$);
109 110 111 112

        // subscribe to router event
        this.activatedRoute.queryParams.subscribe((params: Params) => {
            if (params) {
113 114 115 116 117 118 119
                this.authToken = params["auth_token"];
                this.authRole = params["auth_role"];
                this.errorCode = params["error_code"];
            } else {
                this.authToken = "";
                this.authRole = "";
                this.errorCode = "";
120 121
            }

122
            if (this.authToken && this.authRole && this.errorCode != "") {
123
                this._ata.getloginInfo({ auth_token: this.authToken, auth_role: this.authRole });
124
            }
125 126

        });
127
    }
128

129
    getCookie(key: string) {
130 131
        return this._cookieService.get(key);
    }
132

133
    removeCookie(key: string) {
134
        return this._cookieService.remove(key);
135
    }
136

137 138 139
    checkvalidation() {

    }
140 141 142 143 144 145 146 147 148 149 150 151 152 153 154

    /**
     * Logout from CAS only helper
     */
    casSignOut() {
        this._hds.casSignOut().then(data => {
            this._ata.initLoginInfo();
            // this.router.navigate(['/school']);
            this.authToken = '';
            this.authRole = '';
            window.location.assign((<any>data).next);
        }).catch(err => {
            console.log(err)
        });
    }
155
}