-1
最初、私の悪い言い訳に申し訳ありません。私はドイツの学生です。Angular2:ユーザーサービスのリセット
私はAngularでユーザーサービスを実装しました。 2残念ながら、ログインは部分的にしか動作しません。ユーザーがログイン画面を通過し、アドレスバーのリンクを手動で呼び出した場合e。 g。 URL /チャットすると、ユーザーサービスがリセットされます。ユーザーには権限がなく、ログインしていません。
サービスを改善するにはどうすればよいですか?あなたの答えのための
感謝:)
ログインコンポーネント
@Component({
selector: 'login-form',
templateUrl: 'login.component.html',
styleUrls: ['login.component.scss']
})
export class LoginComponent {
error:string;
model = new User("", "");
constructor(private userService: UserService,
private router: Router,
private ErrorHandler:ErrorHandlingService) {
}
onSubmit() {
this.userService.login(this.model.email, this.model.password).subscribe(
(result) => {
if (result) {
this.router.navigate(['dashboard']);
}
},
(error) => {
error = this.ErrorHandler.convertMessage(error);
this.error = this.ErrorHandler.getUserError(error);
}
);
}
}
ユーザーサービス
import { Injectable } from '@angular/core';
import { Http, Headers } from '@angular/http';
import 'rxjs/add/operator/map';
import {MiaIP} from './miacontroller.service';
@Injectable()
export class UserService {
private loggedIn = false;
private user ={
"event": "",
"data": {
"firstname": "",
"lastname": "",
"token": "",
"privileges": []
}
};
constructor(private http: Http) {
this.loggedIn = !!sessionStorage.getItem('auth_token');
}
login(email, password) {
let headers = new Headers();
headers.append('Content-Type', 'application/json');
return this.http
.post(MiaIP.MIA_ENDPOINT, JSON.stringify({ email, password }), { headers: headers })
.map(res => res.json())
.map((res) => {
if (!!res.event) {
sessionStorage.setItem('auth_token', res.data.token);
this.loggedIn = true;
this.user.data.privileges = res.data.privileges;
this.user.event = res.event;
this.user.data.firstname =res.data.firstname;
this.user.data.lastname =res.data.lastname;
this.user.data.token = res.data.token;
console.log('chat ist: ', this.user.data.privileges.indexOf('get_dashboard') >=1);
}
return !!res.event;
}
);
}
logout() {
sessionStorage.removeItem('auth_token');
this.loggedIn = false;
}
isLoggedIn() {
return this.loggedIn;
}
getUser(){
return this.user;
}
getUsers(){
return !!(this.user.data.privileges.indexOf('get_users') >=1)
}
getDashboard(){
return !!(this.user.data.privileges.indexOf('get_dashboard') >=1)
}
getExperiment(){
return !!(this.user.data.privileges.indexOf('get_experiment') >=1)
}
getChat(){
return !!(this.user.data.privileges.indexOf('get_chat') >=1)
}
getOverview(){
return !!(this.user.data.privileges.indexOf('get_overview') >=1)
}
getMyProfile(){
return !!(this.user.data.privileges.indexOf('get_myprofile') >=1)
}
getScheduling(){
return !!(this.user.data.privileges.indexOf('get_scheduling') >=1)
}
}
チャットコンポーネント、ユーザーのヒットは、アドレスバーに入力した
import { Component, OnInit } from '@angular/core';
@Component({
selector: 'chat',
templateUrl: 'chat.component.html',
styleUrls: ['chat.component.scss']
})
export class ChatComponent{
}