ing
This commit is contained in:
		
							parent
							
								
									47428f8ec5
								
							
						
					
					
						commit
						82bd4ef887
					
				@ -12,6 +12,7 @@ import 'rxjs/add/operator/take';
 | 
			
		||||
import 'rxjs/add/operator/map';
 | 
			
		||||
 | 
			
		||||
import * as AuthStore from 'packages/member/store/auth';
 | 
			
		||||
import { AuthSelector } from 'packages/member/store';
 | 
			
		||||
 | 
			
		||||
@Injectable()
 | 
			
		||||
export class AuthGuard implements CanActivate, CanActivateChild {
 | 
			
		||||
@ -21,7 +22,7 @@ export class AuthGuard implements CanActivate, CanActivateChild {
 | 
			
		||||
 | 
			
		||||
  canActivate(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
 | 
			
		||||
    return this.store
 | 
			
		||||
      .select(AuthStore.isSignin)
 | 
			
		||||
      .select(AuthSelector.isSignin)
 | 
			
		||||
      .map(isSignin => {
 | 
			
		||||
        if (!isSignin) {
 | 
			
		||||
          this.store.dispatch(new AuthStore.SigninRedirect());
 | 
			
		||||
@ -35,7 +36,7 @@ export class AuthGuard implements CanActivate, CanActivateChild {
 | 
			
		||||
 | 
			
		||||
  canActivateChild(next: ActivatedRouteSnapshot, state: RouterStateSnapshot): Observable<boolean> {
 | 
			
		||||
    return this.store
 | 
			
		||||
      .select(AuthStore.isSignin)
 | 
			
		||||
      .select(AuthSelector.isSignin)
 | 
			
		||||
      .map(isSignin => {
 | 
			
		||||
        if (!isSignin) {
 | 
			
		||||
          this.store.dispatch(new AuthStore.SigninRedirect());
 | 
			
		||||
 | 
			
		||||
@ -18,7 +18,10 @@
 | 
			
		||||
          <div *ngIf="formErrors.password" class="help is-danger">
 | 
			
		||||
              {{ formErrors.password }}
 | 
			
		||||
          </div>
 | 
			
		||||
        <!--[disabled]="!signinForm.valid"-->
 | 
			
		||||
          <!--[disabled]="!signinForm.valid"-->
 | 
			
		||||
          <p *ngIf="errorMessage">
 | 
			
		||||
            {{ errorMessage }}
 | 
			
		||||
          </p>
 | 
			
		||||
          <button mat-raised-button color="accent" type="submit">Sign In</button>
 | 
			
		||||
      </form>
 | 
			
		||||
  </mat-card-content>
 | 
			
		||||
 | 
			
		||||
@ -1,9 +1,10 @@
 | 
			
		||||
import { Component, OnInit } from '@angular/core';
 | 
			
		||||
import { Router } from '@angular/router';
 | 
			
		||||
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
 | 
			
		||||
import { Store } from '@ngrx/store';
 | 
			
		||||
import { Store, select } from '@ngrx/store';
 | 
			
		||||
 | 
			
		||||
import * as AuthStore from '../../store/auth';
 | 
			
		||||
import { AuthSelector } from '../../store';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'of-member-signin',
 | 
			
		||||
@ -12,6 +13,11 @@ import * as AuthStore from '../../store/auth';
 | 
			
		||||
})
 | 
			
		||||
export class SigninComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
  pending$ = this.store.pipe(select(AuthSelector.isPending));
 | 
			
		||||
  error$ = this.store.pipe(select(AuthSelector.getError));
 | 
			
		||||
 | 
			
		||||
  errorMessage: string | null;
 | 
			
		||||
 | 
			
		||||
  signinForm: FormGroup;
 | 
			
		||||
  formErrors = {
 | 
			
		||||
    'email': '',
 | 
			
		||||
@ -27,20 +33,40 @@ export class SigninComponent implements OnInit {
 | 
			
		||||
 | 
			
		||||
  ngOnInit() {
 | 
			
		||||
    this.initForm();
 | 
			
		||||
 | 
			
		||||
    this.pending$.subscribe((pending: boolean) => {
 | 
			
		||||
      if (pending) {
 | 
			
		||||
        this.signinForm.disable();
 | 
			
		||||
      } else {
 | 
			
		||||
        this.signinForm.enable();
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    this.error$.subscribe((error) => {
 | 
			
		||||
      if (error) {
 | 
			
		||||
        this.errorMessage = error.exception;
 | 
			
		||||
      } else {
 | 
			
		||||
        this.errorMessage = null;
 | 
			
		||||
      }
 | 
			
		||||
    });
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  initForm() {
 | 
			
		||||
    this.signinForm = this.formBuilder.group({
 | 
			
		||||
      'email': ['', [
 | 
			
		||||
        Validators.required,
 | 
			
		||||
        Validators.email
 | 
			
		||||
      ]
 | 
			
		||||
      'email': [
 | 
			
		||||
        '',
 | 
			
		||||
        [
 | 
			
		||||
          Validators.required,
 | 
			
		||||
          Validators.email
 | 
			
		||||
        ]
 | 
			
		||||
      ],
 | 
			
		||||
      'password': ['', [
 | 
			
		||||
        Validators.pattern('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$'),
 | 
			
		||||
        Validators.minLength(6),
 | 
			
		||||
        Validators.maxLength(25)
 | 
			
		||||
      ]
 | 
			
		||||
      'password': [
 | 
			
		||||
        '',
 | 
			
		||||
        [
 | 
			
		||||
          Validators.pattern('^(?=.*[0-9])(?=.*[a-zA-Z])([a-zA-Z0-9]+)$'),
 | 
			
		||||
          Validators.minLength(6),
 | 
			
		||||
          Validators.maxLength(25)
 | 
			
		||||
        ]
 | 
			
		||||
      ],
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
@ -5,8 +5,6 @@ import { FormsModule, ReactiveFormsModule } from '@angular/forms';
 | 
			
		||||
 | 
			
		||||
import { MaterialModule } from 'app/commons/ui/material/material.module';
 | 
			
		||||
 | 
			
		||||
// import { AuthGuard } from './guard/auth.guard';
 | 
			
		||||
 | 
			
		||||
import { MemberStoreModule } from './member-store.module';
 | 
			
		||||
 | 
			
		||||
import { COMPONENTS } from './component';
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,5 @@
 | 
			
		||||
import { MetaMemberStatus } from 'packages/meta/model';
 | 
			
		||||
 | 
			
		||||
export interface Member {
 | 
			
		||||
  id?: number;
 | 
			
		||||
  email?: string;
 | 
			
		||||
@ -6,5 +8,5 @@ export interface Member {
 | 
			
		||||
  phone?: string;
 | 
			
		||||
  companyName?: string;
 | 
			
		||||
  createDate?: Date;
 | 
			
		||||
  status?: string;
 | 
			
		||||
  status?: MetaMemberStatus;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
							
								
								
									
										6
									
								
								src/packages/member/model/MemberStatus.ts
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										6
									
								
								src/packages/member/model/MemberStatus.ts
									
									
									
									
									
										Normal file
									
								
							@ -0,0 +1,6 @@
 | 
			
		||||
export enum MemberStatus {
 | 
			
		||||
  NOAUTH = 1,
 | 
			
		||||
  NORMAL = 2,
 | 
			
		||||
  DORMANCY = 3,
 | 
			
		||||
  WITHDRAWAL = 4,
 | 
			
		||||
}
 | 
			
		||||
@ -47,18 +47,6 @@ export class Effects {
 | 
			
		||||
      return of(new SigninFailure(error));
 | 
			
		||||
    });
 | 
			
		||||
 | 
			
		||||
    // .map((action: Signin) => action.payload)
 | 
			
		||||
    // .exhaustMap(payload =>
 | 
			
		||||
    //   this.memberService
 | 
			
		||||
    //     .signin(payload.email, payload.password)
 | 
			
		||||
    //     .map(member => {
 | 
			
		||||
    //       return new SigninSuccess(member);
 | 
			
		||||
    //     })
 | 
			
		||||
    //     .catch((error) => {
 | 
			
		||||
    //       return of(new SigninFailure(error.message));
 | 
			
		||||
    //     })
 | 
			
		||||
    // );
 | 
			
		||||
 | 
			
		||||
  @Effect({ dispatch: false })
 | 
			
		||||
  signinSuccess$ = this.actions$
 | 
			
		||||
    .ofType(ActionType.SigninSuccess)
 | 
			
		||||
 | 
			
		||||
@ -1,5 +1,10 @@
 | 
			
		||||
import { ErrorResponse } from 'packages/commons/service/error-response';
 | 
			
		||||
import {
 | 
			
		||||
  createSelector,
 | 
			
		||||
  MemoizedSelector,
 | 
			
		||||
} from '@ngrx/store';
 | 
			
		||||
 | 
			
		||||
import { ErrorResponse } from 'packages/commons/service/error-response';
 | 
			
		||||
import { Domain } from 'packages/domain/model';
 | 
			
		||||
import { Member } from '../../model';
 | 
			
		||||
 | 
			
		||||
export interface State {
 | 
			
		||||
@ -7,6 +12,7 @@ export interface State {
 | 
			
		||||
  error: ErrorResponse | null;
 | 
			
		||||
  isPending: boolean;
 | 
			
		||||
  member: Member | null;
 | 
			
		||||
  domain: Domain | null;
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
export const initialState: State = {
 | 
			
		||||
@ -14,9 +20,16 @@ export const initialState: State = {
 | 
			
		||||
  error: null,
 | 
			
		||||
  isPending: false,
 | 
			
		||||
  member: null,
 | 
			
		||||
  domain: null,
 | 
			
		||||
};
 | 
			
		||||
 | 
			
		||||
export const isSignin = (state: State) => state.isSignin;
 | 
			
		||||
export const getMember = (state: State) => state.member;
 | 
			
		||||
export const getError = (state: State) => state.error;
 | 
			
		||||
export const isPending = (state: State) => state.isPending;
 | 
			
		||||
export class StateSelector {
 | 
			
		||||
  public constructor(private _selector: MemoizedSelector<any, any>) {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  public isSignin = createSelector(this._selector, (state: State) => state.isSignin);
 | 
			
		||||
  public getMember = createSelector(this._selector, (state: State) => state.member);
 | 
			
		||||
  public getDomain = createSelector(this._selector, (state: State) => state.domain);
 | 
			
		||||
  public getError = createSelector(this._selector, (state: State) => state.error);
 | 
			
		||||
  public isPending = createSelector(this._selector, (state: State) => state.isPending);
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
@ -1,3 +1,11 @@
 | 
			
		||||
import {
 | 
			
		||||
  createSelector,
 | 
			
		||||
  createFeatureSelector,
 | 
			
		||||
  ActionReducerMap,
 | 
			
		||||
} from '@ngrx/store';
 | 
			
		||||
 | 
			
		||||
import { MODULE } from '../member.constant';
 | 
			
		||||
 | 
			
		||||
import * as AuthStore from './auth';
 | 
			
		||||
import * as SignupStore from './signup';
 | 
			
		||||
 | 
			
		||||
@ -15,3 +23,18 @@ export const EFFECTS = [
 | 
			
		||||
  AuthStore.Effects,
 | 
			
		||||
  SignupStore.Effects,
 | 
			
		||||
];
 | 
			
		||||
 | 
			
		||||
export const selectMemberState = createFeatureSelector<State>(MODULE.name);
 | 
			
		||||
 | 
			
		||||
export const selectMemberAuthState = createSelector(
 | 
			
		||||
  selectMemberState,
 | 
			
		||||
  (state: State) => state.auth
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
export const AuthSelector = new AuthStore.StateSelector(selectMemberAuthState);
 | 
			
		||||
 | 
			
		||||
 | 
			
		||||
export const selectMemberSignupState = createSelector(
 | 
			
		||||
  selectMemberState,
 | 
			
		||||
  (state: State) => state.signup
 | 
			
		||||
);
 | 
			
		||||
 | 
			
		||||
@ -1,26 +1,32 @@
 | 
			
		||||
import { Component, OnInit } from '@angular/core';
 | 
			
		||||
import { Router } from '@angular/router';
 | 
			
		||||
import { FormGroup, FormBuilder, Validators } from '@angular/forms';
 | 
			
		||||
import { Store } from '@ngrx/store';
 | 
			
		||||
import { Component, OnInit, AfterContentInit } from '@angular/core';
 | 
			
		||||
 | 
			
		||||
import { Router } from '@angular/router';
 | 
			
		||||
import { Store } from '@ngrx/store';
 | 
			
		||||
import * as NoAuthProbeStore from '../../store/noauth-probe';
 | 
			
		||||
 | 
			
		||||
import { Domain } from 'packages/domain/model';
 | 
			
		||||
 | 
			
		||||
@Component({
 | 
			
		||||
  selector: 'of-noauth-list',
 | 
			
		||||
  templateUrl: './list.component.html',
 | 
			
		||||
  styleUrls: ['./list.component.scss']
 | 
			
		||||
})
 | 
			
		||||
export class ListComponent implements OnInit {
 | 
			
		||||
export class ListComponent implements OnInit, AfterContentInit {
 | 
			
		||||
 | 
			
		||||
  constructor(
 | 
			
		||||
    private router: Router,
 | 
			
		||||
    private store: Store<NoAuthProbeStore.State>,
 | 
			
		||||
    private formBuilder: FormBuilder,
 | 
			
		||||
 | 
			
		||||
  ) { }
 | 
			
		||||
 | 
			
		||||
  ngOnInit() {
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
  ngAfterContentInit() {
 | 
			
		||||
    const domain: Domain = {
 | 
			
		||||
      id: 1,
 | 
			
		||||
    };
 | 
			
		||||
    this.store.dispatch(new NoAuthProbeStore.ReadAllByDomain(domain));
 | 
			
		||||
  }
 | 
			
		||||
 | 
			
		||||
}
 | 
			
		||||
 | 
			
		||||
		Loading…
	
	
			
			x
			
			
		
	
		Reference in New Issue
	
	Block a user