我在用户模型中有布尔字段,我需要在用户按下提交后立即在登录页面上打开一个模态窗口,并在我检查 user.user_on_test 字段后从服务器获取信息并仅在它为真时打开模态窗口。你能帮我从回复中提取这些信息吗?
这是我的 user.service
@Injectable()
export class UserService extends BaseService {
protected API_PATH: string;
constructor( protected _http: HttpClient ) {
super( _http );
this.API_PATH += '/rest-auth';
this.getUserData().subscribe();
}
private _user: BehaviorSubject<User> = new BehaviorSubject( null );
get user(): Observable<User> {
return this._user.asObservable();
}
set user( user ) {
if ( <User>user ) {
this._user.next( new User( user ) );
localStorage.setItem( 'active', ( <User>user)
.is_active.toString() );
localStorage.setItem( 'superuser', ( <User>user)
.is_superuser.toString() );
localStorage.setItem( 'user_on_test', ( <User>user)
.user_on_test.toString() );
} else {
this._user.next( null );
localStorage.removeItem( 'active' );
localStorage.removeItem( 'superuser' );
localStorage.removeItem( 'user_on_test');
}
}
public login( user: User ): Observable<any> {
return Observable.concat(
this.request( {
'method': 'POST',
'url': '/login/',
'body': {
username: user.username,
password: user.password
}
} ),
this.getUserData()
);
}
和 login.component:
login() {
this.errorMsg = '';
this._authService.login( this.user )
.takeUntil( this.destroy$).subscribe(
(response) => {
if (this._authService.user) {
// here I need to check user.user_on_test
alert('this user is on test server!');
}
if ( this.redirect ) {
const url = this._route.snapshot.queryParams['returnUrl'] ||'/';
this._router.navigate( [ url ] );
}
},
( rejection ) => {
if ( rejection && rejection.hasOwnProperty( 'error' ) &&
rejection.error.non_field_errors ) {
for (const error in rejection.error.non_field_errors) {
if (rejection.error.non_field_errors.hasOwnProperty(error)) {
this.errorMsg = rejection.error.non_field_errors[error];
}
}
}
});
}