Skip to content

Commit c085f33

Browse files
committed
Merge branch 'deploy/stg' into deploy/prod
2 parents 3ab2cbc + 03f4726 commit c085f33

27 files changed

+269
-282
lines changed

package.json

Lines changed: 11 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -39,33 +39,32 @@
3939
},
4040
"homepage": "https://github.com/springboot-angular2-tutorial/angular2-app",
4141
"dependencies": {
42-
"@angular/common": "2.1.0",
43-
"@angular/compiler": "2.1.0",
44-
"@angular/core": "2.1.0",
45-
"@angular/forms": "2.1.0",
46-
"@angular/http": "2.1.0",
47-
"@angular/platform-browser": "2.1.0",
48-
"@angular/platform-browser-dynamic": "2.1.0",
49-
"@angular/router": "3.1.0",
42+
"@angular/common": "^2.1.0",
43+
"@angular/compiler": "^2.1.0",
44+
"@angular/core": "^2.1.0",
45+
"@angular/forms": "^2.1.0",
46+
"@angular/http": "^2.1.0",
47+
"@angular/platform-browser": "^2.1.0",
48+
"@angular/platform-browser-dynamic": "^2.1.0",
49+
"@angular/router": "^3.1.0",
5050
"bootstrap": "^4.0.0-alpha.4",
5151
"core-js": "^2.4.1",
5252
"jquery": "^2.2.4",
5353
"lodash-es": "^4.16.4",
5454
"md5-hex": "^1.1.0",
55-
"moment": "^2.12.0",
5655
"pluralize": "~3.0.0",
5756
"rxjs": "5.0.0-beta.12",
5857
"time-ago": "^0.1.0",
5958
"toastr": "^2.1.2",
6059
"zone.js": "~0.6.17"
6160
},
6261
"devDependencies": {
63-
"@angular/compiler-cli": "2.1.0",
64-
"@angular/platform-server": "2.1.0",
62+
"@angular/compiler-cli": "^2.1.0",
63+
"@angular/platform-server": "^2.1.0",
6564
"@types/jasmine": "^2.5.35",
6665
"@types/lodash": "^4.14.37",
6766
"@types/node": "^6.0.45",
68-
"@types/pluralize": "0.0.27",
67+
"@types/pluralize": "^0.0.27",
6968
"@types/source-map": "^0.1.28",
7069
"@types/toastr": "^2.1.27",
7170
"@types/webpack": "^1.12.35",

src/app/app.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -8,7 +8,7 @@ import {AppComponent} from "./app.component";
88
import {HeaderComponent} from "./components";
99
import {CoreModule} from "./core";
1010
import {HomeModule} from "./pages/home/home.module";
11-
import {LoginModule} from "./pages/login/login.module";
11+
import {AuthModule} from "./pages/auth/auth.module";
1212
import {TopModule} from "./pages/top/top.module";
1313
import {NoContentComponent} from "./pages/no-content/no-content.component";
1414

@@ -29,7 +29,7 @@ import {NoContentComponent} from "./pages/no-content/no-content.component";
2929

3030
CoreModule,
3131
HomeModule,
32-
LoginModule,
32+
AuthModule,
3333
TopModule,
3434
],
3535
providers: [

src/app/app.routes.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
import {Routes} from "@angular/router";
22
import {HomeComponent} from "./pages/home/home.component";
33
import {ProfileDataResolver} from "./core/services/profile-data.resolver";
4-
import {LoginComponent} from "./pages/login/login.component";
4+
import {AuthComponent} from "./pages/auth/auth.component";
55
import {TopComponent} from "./pages/top/top.component";
66
import {PrivatePageGuard} from "./core/services/private-page.guard";
77
import {PublicPageGuard} from "./core/services/public-page.guard";
@@ -38,7 +38,7 @@ export const ROUTES: Routes = [
3838
loadChildren: './pages/+user-list/user-list.module#UserListModule',
3939
canActivate: [PrivatePageGuard],
4040
},
41-
{path: 'login', component: LoginComponent, canActivate: [PublicPageGuard]},
41+
{path: 'login', component: AuthComponent, canActivate: [PublicPageGuard]},
4242
{
4343
path: 'signup',
4444
loadChildren: './pages/+signup/signup.module#SignupModule',

src/app/components/header/header.component.html

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -26,7 +26,7 @@
2626
<a class="nav-link" [routerLink]="['/login']">Sign in</a>
2727
</li>
2828
</ul>
29-
<ul class="nav navbar-nav pull-sm-right" *ngIf="isSignedIn">
29+
<ul class="nav navbar-nav float-sm-right" *ngIf="isSignedIn">
3030
<li class="nav-item profile" routerLinkActive="active"
3131
[routerLinkActiveOptions]="{exact: true}">
3232
<a class="nav-link" [routerLink]="['/users/me']">Profile</a>

src/app/components/header/header.component.spec.ts

Lines changed: 5 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,7 @@ import {HeaderComponent} from "./header.component";
1414
import {RouterTestingModule} from "@angular/router/testing";
1515
import {CoreModule} from "../../core";
1616
import {APP_TEST_HTTP_PROVIDERS, login, advance} from "../../../testing";
17-
import {LoginService} from "../../core/services/login.service";
17+
import {AuthService} from "../../core/services/auth.service";
1818
import {UserService} from "../../core/services/user.service";
1919

2020
describe('HeaderComponent', () => {
@@ -76,9 +76,9 @@ describe('HeaderComponent', () => {
7676
};
7777

7878
describe('when signed in', () => {
79-
let loginService: LoginService;
79+
let authService: AuthService;
8080

81-
beforeEach(inject([LoginService], _ => loginService = _));
81+
beforeEach(inject([AuthService], _ => authService = _));
8282
beforeEach(login());
8383
beforeEach(initComponent());
8484

@@ -142,9 +142,9 @@ describe('HeaderComponent', () => {
142142
it('shows a nav link to logout', fakeAsync(() => {
143143
const link = getDOM().querySelector(cmpDebugElement.nativeElement, '.nav-item.logout>a');
144144
expect(link).toBeTruthy();
145-
spyOn(loginService, 'logout');
145+
spyOn(authService, 'logout');
146146
link.click();
147-
expect(loginService.logout).toHaveBeenCalled();
147+
expect(authService.logout).toHaveBeenCalled();
148148
}));
149149
}); // when signed in
150150

src/app/components/header/header.component.ts

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
import {Component, OnInit} from "@angular/core";
22
import {Router} from "@angular/router";
3-
import {LoginService} from "../../core/services/login.service";
3+
import {AuthService} from "../../core/services/auth.service";
44

55
@Component({
66
selector: 'mpt-header',
@@ -12,18 +12,18 @@ export class HeaderComponent implements OnInit {
1212
isSignedIn: boolean;
1313

1414
constructor(private router: Router,
15-
private loginService: LoginService) {
15+
private authService: AuthService) {
1616
}
1717

1818
ngOnInit(): void {
19-
this.isSignedIn = this.loginService.isSignedIn();
20-
this.loginService.events.subscribe(() => {
21-
this.isSignedIn = this.loginService.isSignedIn();
19+
this.isSignedIn = this.authService.isSignedIn();
20+
this.authService.events.subscribe(() => {
21+
this.isSignedIn = this.authService.isSignedIn();
2222
});
2323
}
2424

2525
logout() {
26-
this.loginService.logout();
26+
this.authService.logout();
2727
this.router.navigate(['/login']);
2828
}
2929

src/app/core/core.module.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -2,7 +2,7 @@ import {CommonModule} from "@angular/common";
22
import {NgModule} from "@angular/core/src/metadata/ng_module";
33
import {SkipSelf, Optional} from "@angular/core";
44
import {HttpErrorHandler} from "./services/http-error-handler";
5-
import {LoginService} from "./services/login.service";
5+
import {AuthService} from "./services/auth.service";
66
import {MicropostService} from "./services/micropost.service";
77
import {UserService} from "./services/user.service";
88
import {PrivatePageGuard} from "./services/private-page.guard";
@@ -30,7 +30,7 @@ export function createJsonHttp(xhrBackend: XHRBackend, requestOptions: RequestOp
3030
deps: [XHRBackend, RequestOptions]
3131
},
3232
HttpErrorHandler,
33-
LoginService,
33+
AuthService,
3434
MicropostService,
3535
UserService,
3636

src/app/core/domains.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -12,6 +12,7 @@ export interface User {
1212
name?:string;
1313
userStats?:UserStats;
1414
isMyself?:boolean;
15+
isFollowedByMe?:boolean;
1516
avatarHash?:string;
1617
}
1718

@@ -23,6 +24,5 @@ export interface UserStats {
2324
micropostCnt:number;
2425
followingCnt:number;
2526
followerCnt:number;
26-
followedByMe:boolean;
2727
}
2828

src/app/core/services/login.service.ts renamed to src/app/core/services/auth.service.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -5,7 +5,7 @@ import {Subject} from "rxjs/Rx";
55
import {JsonHttp} from "./";
66

77
@Injectable()
8-
export class LoginService {
8+
export class AuthService {
99

1010
private authEvents: Subject<AuthEvent>;
1111

@@ -18,8 +18,8 @@ export class LoginService {
1818
email: email,
1919
password: password,
2020
};
21-
return this.http.post('/api/login', body).do(resp => {
22-
localStorage.setItem('jwt', resp.headers.get('x-auth-token'));
21+
return this.http.post('/api/auth', body).do((resp: Response) => {
22+
localStorage.setItem('jwt', resp.json().token);
2323
this.authEvents.next(new DidLogin());
2424
});
2525
}

src/app/core/services/http-error-handler.spec.ts

Lines changed: 7 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -1,14 +1,14 @@
11
import {inject, TestBed} from "@angular/core/testing";
22
import {Router} from "@angular/router";
33
import {HttpErrorHandler} from "./http-error-handler";
4-
import {LoginService} from "./login.service";
4+
import {AuthService} from "./auth.service";
55
import {CoreModule} from "../core.module";
66
import {APP_TEST_HTTP_PROVIDERS} from "../../../testing";
77

88
describe('HttpErrorHandler', () => {
99

1010
let errorHandler: HttpErrorHandler;
11-
let loginService: LoginService;
11+
let authService: AuthService;
1212
let router: Router;
1313

1414
class MockRouter {
@@ -31,22 +31,22 @@ describe('HttpErrorHandler', () => {
3131
});
3232
});
3333

34-
beforeEach(inject([HttpErrorHandler, LoginService, Router], (..._) => {
35-
[errorHandler, loginService, router] = _;
36-
spyOn(loginService, 'logout');
34+
beforeEach(inject([HttpErrorHandler, AuthService, Router], (..._) => {
35+
[errorHandler, authService, router] = _;
36+
spyOn(authService, 'logout');
3737
spyOn(router, 'navigate');
3838
}));
3939

4040
describe('.handle', () => {
4141
it('handles 401 response', () => {
4242
errorHandler.handle({status: 401});
43-
expect(loginService.logout).toHaveBeenCalled();
43+
expect(authService.logout).toHaveBeenCalled();
4444
expect(router.navigate).toHaveBeenCalledWith(['login']);
4545
});
4646

4747
it('does not handle other errors', () => {
4848
errorHandler.handle({status: 400});
49-
expect(loginService.logout).not.toHaveBeenCalled();
49+
expect(authService.logout).not.toHaveBeenCalled();
5050
expect(router.navigate).not.toHaveBeenCalled();
5151
});
5252
}); // .handle

src/app/core/services/http-error-handler.ts

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,19 +1,19 @@
11
import {Injectable} from "@angular/core";
22
import {Router} from "@angular/router";
33
import * as toastr from "toastr";
4-
import {LoginService} from "./login.service";
4+
import {AuthService} from "./auth.service";
55

66
@Injectable()
77
export class HttpErrorHandler {
88

99
constructor(private router:Router,
10-
private loginService:LoginService) {
10+
private authService:AuthService) {
1111
}
1212

1313
handle(error:any) {
1414
if (error.status === 401) {
1515
toastr.error('Please sign in');
16-
this.loginService.logout();
16+
this.authService.logout();
1717
this.router.navigate(['login']);
1818
}
1919
}

src/app/core/services/login.service.spec.ts

Lines changed: 12 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,17 @@
11
import {inject, TestBed} from "@angular/core/testing";
22
import {
3-
Headers,
43
ResponseOptions,
54
Response,
65
RequestMethod,
76
HttpModule
87
} from "@angular/http";
98
import {MockBackend} from "@angular/http/testing";
10-
import {LoginService} from "./login.service";
9+
import {AuthService} from "./auth.service";
1110
import {APP_TEST_HTTP_PROVIDERS} from "../../../testing";
1211

13-
describe('LoginService', () => {
12+
describe('AuthService', () => {
1413

15-
let loginService: LoginService;
14+
let authService: AuthService;
1615
let backend: MockBackend;
1716

1817
beforeEach(() => {
@@ -22,28 +21,28 @@ describe('LoginService', () => {
2221
],
2322
providers: [
2423
APP_TEST_HTTP_PROVIDERS,
25-
LoginService,
24+
AuthService,
2625
],
2726
});
2827
});
29-
beforeEach(inject([LoginService, MockBackend], (..._) => {
30-
[loginService, backend] = _;
28+
beforeEach(inject([AuthService, MockBackend], (..._) => {
29+
[authService, backend] = _;
3130
}));
3231

3332
describe('.login', () => {
3433
it('can login', (done) => {
3534
backend.connections.subscribe(conn => {
3635
conn.mockRespond(new Response(new ResponseOptions({
37-
headers: new Headers({'x-auth-token': 'my jwt'}),
36+
body: JSON.stringify({token: 'my jwt'}),
3837
})));
3938
expect(conn.request.method).toEqual(RequestMethod.Post);
40-
expect(conn.request.url).toEqual('/api/login');
39+
expect(conn.request.url).toEqual('/api/auth');
4140
expect(conn.request.json()).toEqual({
4241
email: 'test@test.com',
4342
password: 'secret',
4443
});
4544
});
46-
loginService.login('test@test.com', 'secret').subscribe(() => {
45+
authService.login('test@test.com', 'secret').subscribe(() => {
4746
expect(localStorage.getItem('jwt')).toEqual('my jwt');
4847
done();
4948
});
@@ -53,22 +52,22 @@ describe('LoginService', () => {
5352
describe('.logout', () => {
5453
it('can logout', () => {
5554
localStorage.setItem('jwt', 'my jwt');
56-
loginService.logout();
55+
authService.logout();
5756
expect(localStorage.getItem('jwt')).toBeFalsy();
5857
});
5958
}); // .logout
6059

6160
describe('.isSignedIn', () => {
6261
describe('when not signed in', () => {
6362
it('should be false', () => {
64-
expect(loginService.isSignedIn()).toBeFalsy();
63+
expect(authService.isSignedIn()).toBeFalsy();
6564
});
6665
});
6766

6867
describe('when signed in', () => {
6968
beforeEach(() => localStorage.setItem('jwt', 'dummy'));
7069
it('should be true', () => {
71-
expect(loginService.isSignedIn()).toBeTruthy();
70+
expect(authService.isSignedIn()).toBeTruthy();
7271
});
7372
});
7473
}); // .isSignedIn
Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,18 +1,18 @@
11
import {Injectable} from "@angular/core";
22
import {CanActivate, Router} from "@angular/router";
3-
import {LoginService} from "./login.service";
3+
import {AuthService} from "./auth.service";
44

55
@Injectable()
66
export class PrivatePageGuard implements CanActivate {
77

8-
constructor(private router:Router, private loginService:LoginService) {
8+
constructor(private router:Router, private authService:AuthService) {
99
}
1010

1111
canActivate() {
12-
if (!this.loginService.isSignedIn()) {
12+
if (!this.authService.isSignedIn()) {
1313
this.router.navigate(['/login']);
1414
}
15-
return this.loginService.isSignedIn();
15+
return this.authService.isSignedIn();
1616
}
1717

1818
}

0 commit comments

Comments
 (0)