Browse Source

Cleanup

pull/1/head
Sebastian 9 years ago
parent
commit
ef03db14d4
  1. 11
      src/Squidex/Startup.cs
  2. 2
      src/Squidex/app/polyfills.ts
  3. 10
      src/Squidex/app/shared/guards/auth.guard.ts
  4. 59
      src/Squidex/app/shared/services/auth.service.ts
  5. 31
      src/Squidex/package.json
  6. 1
      src/Squidex/project.json
  7. 77
      src/Squidex/wwwroot/scripts/oidc-client.min.js

11
src/Squidex/Startup.cs

@ -98,17 +98,6 @@ namespace Squidex
app.UseMiddleware<SingleUrlsMiddleware>();
}
if (Environment.IsDevelopment())
{
app.UseDeveloperExceptionPage();
app.UseWebpackProxy();
app.UseDefaultFiles();
}
else
{
app.UseDefaultFiles(new DefaultFilesOptions { DefaultFileNames = new List<string> { "build/index.html" } });
}
UseIdentity(app);
UseApi(app);
UseFrontend(app);

2
src/Squidex/app/polyfills.ts

@ -6,7 +6,7 @@
*/
import 'core-js/es6';
import 'reflect-metadata';
import 'core-js/es7/reflect';
require('zone.js/dist/zone');

10
src/Squidex/app/shared/guards/auth.guard.ts

@ -20,11 +20,17 @@ export class AuthGuard implements Ng2Router.CanActivate {
) {
}
public canActivate(route: Ng2Router.ActivatedRouteSnapshot, state: Ng2Router.RouterStateSnapshot): boolean {
if (state.url !== LOGIN_URL && !this.authService.isAuthenticated) {
public canActivate(route: Ng2Router.ActivatedRouteSnapshot, state: Ng2Router.RouterStateSnapshot): Promise<boolean> | boolean {
if (state.url !== LOGIN_URL) {
return this.authService.checkLogin().then(isAuthenticated => {
if (!isAuthenticated) {
this.router.navigate([LOGIN_URL]);
return false;
}
return true;
});
}
return true;
}

59
src/Squidex/app/shared/services/auth.service.ts

@ -22,13 +22,30 @@ import { ApiUrlConfig } from './../../framework';
export class AuthService {
private readonly userManager: UserManager;
private currentUser: User | null = null;
private checkLoginPromise: Promise<boolean>;
public get user(): User | null {
return this.currentUser;
}
public get isAuthenticated() {
return this.currentUser;
public get isAuthenticated(): boolean {
return !!this.currentUser;
}
public checkLogin(): Promise<boolean> {
if (this.checkLoginPromise) {
return this.checkLoginPromise;
} else if (this.currentUser) {
return Promise.resolve(true);
} else {
this.checkLoginPromise =
this.checkState(this.userManager.getUser())
.then(result => {
return result || this.checkState(this.userManager.signinSilent());
});
return this.checkLoginPromise;
}
}
constructor(apiUrl: ApiUrlConfig,
@ -42,39 +59,47 @@ export class AuthService {
response_type: 'id_token token',
silent_redirect_uri: apiUrl.buildUrl('identity-server/client-callback-silent/'),
popup_redirect_uri: apiUrl.buildUrl('identity-server/client-callback-popup/'),
authority: apiUrl.buildUrl('identity-server/'),
authority: apiUrl.buildUrl('identity-server/')
});
this.userManager.getUser()
.then((user) => {
this.userManager.events.addUserLoaded(user => {
this.currentUser = user;
})
.catch((err) => {
this.currentUser = null;
});
this.userManager.events.addUserUnloaded(() => {
this.currentUser = null;
});
this.checkLogin();
}
public logout(): Observable<any> {
return Observable.fromPromise(this.userManager.signoutRedirectCallback());
}
public login(): Observable<User> {
let userPromise =
this.userManager.signinSilent()
public login(): Observable<boolean> {
const userPromise =
this.checkState(this.userManager.signinSilent())
.then(result => {
return result || this.checkState(this.userManager.signinPopup());
});
return Observable.fromPromise(userPromise);
}
private checkState(promise: Promise<User>): Promise<boolean> {
const resultPromise =
promise
.then(user => {
if (user) {
return user;
} else {
return this.userManager.signinPopup();
this.currentUser = user;
}
})
.catch(() => this.userManager.signinPopup());
return !!this.currentUser;
}).catch((err) => {
return false;
});
return Observable.fromPromise(userPromise);
return resultPromise;
}
public authGet(url: string, options?: Ng2Http.RequestOptions): Observable<Ng2Http.Response> {

31
src/Squidex/package.json

@ -8,28 +8,28 @@
"test": "karma start",
"test:coverage": "karma start karma.coverage.conf.js",
"test:clean": "rimraf _test-output",
"dev": "webpack-dev-server --inline --hot --port 3000",
"dev": "cpx node_modules/oidc-client/dist/oidc-client.min.js wwwroot/scripts/ & webpack-dev-server --inline --hot --port 3000",
"build": "webpack --config app-config/webpack.prod.js --bail",
"build:copy": "cpx node_modules/oidc-client/dist/oidc-client.min.js",
"build:clean": "rimraf wwwroot/build"
},
"dependencies": {
"@angular/common": "2.1.0",
"@angular/compiler": "2.1.0",
"@angular/core": "2.1.0",
"@angular/forms": "2.1.0",
"@angular/http": "2.1.0",
"@angular/platform-browser": "2.1.0",
"@angular/platform-browser-dynamic": "2.1.0",
"@angular/router": "3.1.0",
"@angular/common": "2.1.1",
"@angular/compiler": "2.1.1",
"@angular/core": "2.1.1",
"@angular/forms": "2.1.1",
"@angular/http": "2.1.1",
"@angular/platform-browser": "2.1.1",
"@angular/platform-browser-dynamic": "2.1.1",
"@angular/router": "3.1.1",
"bootstrap": "^4.0.0-alpha.2",
"core-js": "^2.4.1",
"font-awesome": "^4.6.3",
"font-awesome": "^4.7.0",
"immutable": "^3.8.1",
"mousetrap": "^1.6.0",
"oidc-client": "^1.2.0",
"oidc-client": "^1.2.1-beta.3",
"reflect-metadata": "^0.1.3",
"rxjs": "5.0.0-beta.12",
"systemjs": "0.19.38",
"zone.js": "^0.6.23"
},
"devDependencies": {
@ -39,6 +39,7 @@
"@types/mousetrap": "^1.5.26-alpha",
"@types/node": "^6.0.33",
"awesome-typescript-loader": "^2.2.4",
"cpx": "^1.5.0",
"css-loader": "^0.25.0",
"exports-loader": "^0.6.3",
"extract-text-webpack-plugin": "^1.0.1",
@ -69,10 +70,10 @@
"tslint": "^3.13.0-dev.0",
"tslint-loader": "^2.1.5",
"typemoq": "^0.3.2",
"typescript": "^2.0.0-dev.20160711",
"typescript": "^2.0.6",
"underscore": "^1.8.3",
"webpack": "^1.13.1",
"webpack": "^1.13.3",
"webpack-dev-server": "^1.14.1",
"webpack-merge": "^0.14.0"
"webpack-merge": "^0.15.0"
}
}

1
src/Squidex/project.json

@ -83,6 +83,7 @@
"scripts": {
"prepublish": [
"npm install",
"npm run-script build:copy",
"npm run-script build"
],
"postpublish": [

77
src/Squidex/wwwroot/scripts/oidc-client.min.js

File diff suppressed because one or more lines are too long
Loading…
Cancel
Save