diff --git a/examples/demo-template/README.md b/examples/demo-template/README.md
index 52b3001be1..950b2266c9 100755
--- a/examples/demo-template/README.md
+++ b/examples/demo-template/README.md
@@ -202,28 +202,7 @@ An Angular JS example using Keycloak to secure it.
If you are already logged in, you will not be asked for a username and password, but you will be redirected to
an oauth grant page. This page asks you if you want to grant certain permissions to the third-part app.
-Step 10: Angular2 JS Example
-----------------------------------
-An Angular2 JS example using Keycloak to secure it. Angular2 is in beta version yet.
-
-To install angular2
-```
-$ cd keycloak/examples/demo-template/angular2-product-app/src/main/webapp/
-$ npm install
-```
-
-Transpile TypeScript to JavaScript before running the application.
-```
-$ npm run tsc
-```
-
-[http://localhost:8080/angular2-product](http://localhost:8080/angular2-product)
-
-If you are already logged in, you will not be asked for a username and password, but you will be redirected to
-an oauth grant page. This page asks you if you want to grant certain permissions to the third-part app.
-
-
-Step 11: Pure HTML5/Javascript Example
+Step 10: Pure HTML5/Javascript Example
----------------------------------
An pure HTML5/Javascript example using Keycloak to secure it.
@@ -232,7 +211,7 @@ An pure HTML5/Javascript example using Keycloak to secure it.
If you are already logged in, you will not be asked for a username and password, but you will be redirected to
an oauth grant page. This page asks you if you want to grant certain permissions to the third-part app.
-Step 12: Service Account Example
+Step 11: Service Account Example
================================
An example for retrieve service account dedicated to the Client Application itself (not to any user).
@@ -240,7 +219,7 @@ An example for retrieve service account dedicated to the Client Application itse
Client authentication is done with OAuth2 Client Credentials Grant in out-of-bound request (Not Keycloak login screen displayed) .
-Step 13: Offline Access Example
+Step 12: Offline Access Example
===============================
An example for retrieve offline token, which is then saved to the database and can be used by application anytime later. Offline token
is valid even if user is already logged out from SSO. Server restart also won't invalidate offline token. Offline token can be revoked by the user in
diff --git a/examples/demo-template/angular2-product-app/pom.xml b/examples/demo-template/angular2-product-app/pom.xml
deleted file mode 100644
index c62fe16b68..0000000000
--- a/examples/demo-template/angular2-product-app/pom.xml
+++ /dev/null
@@ -1,101 +0,0 @@
-
-
-
-
-
- keycloak-examples-demo-parent
- org.keycloak
- 3.2.0.CR1-SNAPSHOT
-
-
- 4.0.0
- org.keycloak.example.demo
- angular2-product-example
- war
- Angular2 Product Portal JS
-
-
-
- angular2-product
-
-
- org.jboss.as.plugins
- jboss-as-maven-plugin
-
- false
-
-
-
- org.wildfly.plugins
- wildfly-maven-plugin
-
- false
-
-
-
- org.apache.maven.plugins
- maven-war-plugin
-
-
-
-
- src/main/frontend/dist
-
-
-
-
-
- com.github.eirslett
- frontend-maven-plugin
- 1.3
-
- v6.10.0
- src/main/frontend
- target
-
-
-
- install node and npm
-
- install-node-and-npm
-
-
-
- npm install
-
- npm
-
-
- install
-
-
-
- npm run build
-
- npm
-
-
- run ng -- build --base-href /angular2-product/ --env=war
-
-
-
-
-
-
-
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/.angular-cli.json b/examples/demo-template/angular2-product-app/src/main/frontend/.angular-cli.json
deleted file mode 100644
index 1d5d927a6c..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/.angular-cli.json
+++ /dev/null
@@ -1,57 +0,0 @@
-{
- "$schema": "./node_modules/@angular/cli/lib/config/schema.json",
- "project": {
- "version": "1.0.0-beta.32.3",
- "name": "angular2-product-app"
- },
- "apps": [
- {
- "root": "src",
- "outDir": "dist",
- "assets": [
- "assets",
- "favicon.ico"
- ],
- "index": "index.html",
- "main": "main.ts",
- "polyfills": "polyfills.ts",
- "test": "test.ts",
- "tsconfig": "tsconfig.json",
- "prefix": "app",
- "styles": [
- "styles.css"
- ],
- "scripts": [],
- "environmentSource": "environments/environment.ts",
- "environments": {
- "dev": "environments/environment.ts",
- "war": "environments/environment.war.ts",
- "prod": "environments/environment.prod.ts"
- }
- }
- ],
- "e2e": {
- "protractor": {
- "config": "./protractor.conf.js"
- }
- },
- "lint": [
- {
- "files": "src/**/*.ts",
- "project": "src/tsconfig.json"
- },
- {
- "files": "e2e/**/*.ts",
- "project": "e2e/tsconfig.json"
- }
- ],
- "test": {
- "karma": {
- "config": "./karma.conf.js"
- }
- },
- "defaults": {
- "styleExt": "css",
- "component": {}
- }
-}
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/.editorconfig b/examples/demo-template/angular2-product-app/src/main/frontend/.editorconfig
deleted file mode 100644
index 6e87a003da..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/.editorconfig
+++ /dev/null
@@ -1,13 +0,0 @@
-# Editor configuration, see http://editorconfig.org
-root = true
-
-[*]
-charset = utf-8
-indent_style = space
-indent_size = 2
-insert_final_newline = true
-trim_trailing_whitespace = true
-
-[*.md]
-max_line_length = off
-trim_trailing_whitespace = false
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/.gitignore b/examples/demo-template/angular2-product-app/src/main/frontend/.gitignore
deleted file mode 100644
index 8ce8738573..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/.gitignore
+++ /dev/null
@@ -1,41 +0,0 @@
-# See http://help.github.com/ignore-files/ for more about ignoring files.
-
-# compiled output
-/dist
-/tmp
-
-# dependencies
-/node_modules
-
-# IDEs and editors
-/.idea
-.project
-.classpath
-.c9/
-*.launch
-.settings/
-*.sublime-workspace
-
-# IDE - VSCode
-.vscode/*
-!.vscode/settings.json
-!.vscode/tasks.json
-!.vscode/launch.json
-!.vscode/extensions.json
-
-# misc
-/.sass-cache
-/connect.lock
-/coverage/*
-/libpeerconnection.log
-npm-debug.log
-testem.log
-/typings
-
-# e2e
-/e2e/*.js
-/e2e/*.map
-
-#System Files
-.DS_Store
-Thumbs.db
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/README.md b/examples/demo-template/angular2-product-app/src/main/frontend/README.md
deleted file mode 100644
index f0520d74ee..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/README.md
+++ /dev/null
@@ -1,36 +0,0 @@
-# Angular2ProductApp
-
-This project was generated with [Angular CLI](https://github.com/angular/angular-cli) version 1.0.0-beta.32.3. Keycloak integration is based on Angular
-
-## Development server
-Run `ng serve` for a dev server. Navigate to `http://localhost:4200/`. The app will automatically reload if you change any of the source files.
-
-This application depends on `database-service` application API deployed at `http://localhost:8080/database-service` so you will have to make sure it allows cross-origin requests. It can be enabled for `database-service` in it's `keycloak.json`:
-
- {
- "realm" : "demo",
- "resource" : "database-service",
- ...
- "enable-cors": true
- }
-
-## Code scaffolding
-
-Run `ng generate component component-name` to generate a new component. You can also use `ng generate directive/pipe/service/class/module`.
-
-## Build
-
-Run `ng build` to build the project. The build artifacts will be stored in the `dist/` directory. Use the `-prod` flag for a production build.
-
-## Running unit tests
-
-Run `ng test` to execute the unit tests via [Karma](https://karma-runner.github.io).
-
-## Running end-to-end tests
-
-Run `ng e2e` to execute the end-to-end tests via [Protractor](http://www.protractortest.org/).
-Before running the tests make sure you are serving the app via `ng serve` and Keycloak and `database-service` is up and running at `http://localhost:8080`.
-
-## Further help
-
-To get more help on the Angular CLI use `ng help` or go check out the [Angular CLI README](https://github.com/angular/angular-cli/blob/master/README.md).
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/e2e/app.e2e-spec.ts b/examples/demo-template/angular2-product-app/src/main/frontend/e2e/app.e2e-spec.ts
deleted file mode 100644
index 83246f10dd..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/e2e/app.e2e-spec.ts
+++ /dev/null
@@ -1,20 +0,0 @@
-import { Angular2ProductAppPage } from './app.po';
-
-describe('angular2-product-app App', () => {
- let page: Angular2ProductAppPage;
-
- beforeEach(() => {
- page = new Angular2ProductAppPage();
- });
-
- it('should display message saying Angular2 Product', () => {
- page.navigateTo();
- expect(page.getParagraphText()).toEqual('Angular2 Product');
- });
-
- it('should load Products', () => {
- page.navigateTo();
- const products = page.loadProducts();
- ['iphone', 'ipad', 'ipod'].forEach(e => expect(products).toContain(e));
- });
-});
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/e2e/app.po.ts b/examples/demo-template/angular2-product-app/src/main/frontend/e2e/app.po.ts
deleted file mode 100644
index 8ebb121c33..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/e2e/app.po.ts
+++ /dev/null
@@ -1,28 +0,0 @@
-import { browser, element, by } from 'protractor';
-
-export class Angular2ProductAppPage {
- navigateTo() {
- browser.ignoreSynchronization = true;
- browser.get('/');
- browser.getCurrentUrl().then(url => {
- if (url.includes('/auth/realms/demo')) {
- element(by.id('username')).sendKeys('bburke@redhat.com');
- element(by.id('password')).sendKeys('password');
- element(by.id('kc-login')).click();
- }
- browser.ignoreSynchronization = false;
-
- });
- }
-
- getParagraphText() {
- return element(by.css('app-root h1')).getText();
- }
-
- loadProducts() {
- const click = element(by.id('reload-data')).click();
- browser.wait(click, 2000, 'Products should load within 2 seconds');
- return element.all(by.css('table.table td')).getText();
- }
-
-}
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/e2e/tsconfig.json b/examples/demo-template/angular2-product-app/src/main/frontend/e2e/tsconfig.json
deleted file mode 100644
index 94da47a242..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/e2e/tsconfig.json
+++ /dev/null
@@ -1,19 +0,0 @@
-{
- "compileOnSave": false,
- "compilerOptions": {
- "declaration": false,
- "emitDecoratorMetadata": true,
- "experimentalDecorators": true,
- "lib": [
- "es2016"
- ],
- "module": "commonjs",
- "moduleResolution": "node",
- "outDir": "../dist/out-tsc-e2e",
- "sourceMap": true,
- "target": "es6",
- "typeRoots": [
- "../node_modules/@types"
- ]
- }
-}
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/karma.conf.js b/examples/demo-template/angular2-product-app/src/main/frontend/karma.conf.js
deleted file mode 100644
index b0052c5231..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/karma.conf.js
+++ /dev/null
@@ -1,45 +0,0 @@
-// Karma configuration file, see link for more information
-// https://karma-runner.github.io/0.13/config/configuration-file.html
-
-module.exports = function (config) {
- config.set({
- basePath: '',
- frameworks: ['jasmine', '@angular/cli'],
- plugins: [
- require('karma-jasmine'),
- require('karma-chrome-launcher'),
- require('karma-jasmine-html-reporter'),
- require('karma-coverage-istanbul-reporter'),
- require('@angular/cli/plugins/karma')
- ],
- client:{
- clearContext: false // leave Jasmine Spec Runner output visible in browser
- },
- files: [
- { pattern: './src/test.ts', watched: false }
- ],
- preprocessors: {
- './src/test.ts': ['@angular/cli']
- },
- mime: {
- 'text/x-typescript': ['ts','tsx']
- },
- coverageIstanbulReporter: {
- reports: [ 'html', 'lcovonly' ],
- fixWebpackSourcePaths: true
- },
- angularCli: {
- config: './.angular-cli.json',
- environment: 'dev'
- },
- reporters: config.angularCli && config.angularCli.codeCoverage
- ? ['progress', 'coverage-istanbul']
- : ['progress', 'kjhtml'],
- port: 9876,
- colors: true,
- logLevel: config.LOG_INFO,
- autoWatch: true,
- browsers: ['Chrome'],
- singleRun: false
- });
-};
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/package.json b/examples/demo-template/angular2-product-app/src/main/frontend/package.json
deleted file mode 100644
index 91223e5e80..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/package.json
+++ /dev/null
@@ -1,46 +0,0 @@
-{
- "name": "angular2-product-app",
- "version": "0.0.0",
- "license": "Apache-2.0",
- "angular-cli": {},
- "scripts": {
- "ng": "ng",
- "start": "ng serve",
- "test": "ng test",
- "lint": "ng lint",
- "e2e": "ng e2e"
- },
- "private": true,
- "dependencies": {
- "@angular/common": "^2.4.0",
- "@angular/compiler": "^2.4.0",
- "@angular/core": "^2.4.0",
- "@angular/forms": "^2.4.0",
- "@angular/http": "^2.4.0",
- "@angular/platform-browser": "^2.4.0",
- "@angular/platform-browser-dynamic": "^2.4.0",
- "@angular/router": "^3.4.0",
- "core-js": "^2.4.1",
- "rxjs": "^5.1.0",
- "zone.js": "^0.7.6"
- },
- "devDependencies": {
- "@angular/cli": "1.0.0-beta.32.3",
- "@angular/compiler-cli": "^2.4.0",
- "@types/jasmine": "2.5.38",
- "@types/node": "~6.0.60",
- "codelyzer": "~2.0.0-beta.4",
- "jasmine-core": "~2.5.2",
- "jasmine-spec-reporter": "~3.2.0",
- "karma": "~1.4.1",
- "karma-chrome-launcher": "~2.0.0",
- "karma-cli": "~1.0.1",
- "karma-jasmine": "~1.1.0",
- "karma-jasmine-html-reporter": "^0.2.2",
- "karma-coverage-istanbul-reporter": "^0.2.0",
- "protractor": "~5.1.0",
- "ts-node": "~2.0.0",
- "tslint": "~4.4.2",
- "typescript": "~2.0.0"
- }
-}
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/protractor.conf.js b/examples/demo-template/angular2-product-app/src/main/frontend/protractor.conf.js
deleted file mode 100644
index c819669c0a..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/protractor.conf.js
+++ /dev/null
@@ -1,31 +0,0 @@
-// Protractor configuration file, see link for more information
-// https://github.com/angular/protractor/blob/master/lib/config.ts
-
-/*global jasmine */
-const { SpecReporter } = require('jasmine-spec-reporter');
-
-exports.config = {
- allScriptsTimeout: 11000,
- specs: [
- './e2e/**/*.e2e-spec.ts'
- ],
- capabilities: {
- 'browserName': 'chrome'
- },
- directConnect: true,
- baseUrl: 'http://localhost:4200/',
- framework: 'jasmine',
- jasmineNodeOpts: {
- showColors: true,
- defaultTimeoutInterval: 30000,
- print: function() {}
- },
- beforeLaunch: function() {
- require('ts-node').register({
- project: 'e2e'
- });
- },
- onPrepare() {
- jasmine.getEnv().addReporter(new SpecReporter({ spec: { displayStacktrace: true } }));
- }
-};
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/app/app.component.css b/examples/demo-template/angular2-product-app/src/main/frontend/src/app/app.component.css
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/app/app.component.html b/examples/demo-template/angular2-product-app/src/main/frontend/src/app/app.component.html
deleted file mode 100644
index 163d8db9b4..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/app/app.component.html
+++ /dev/null
@@ -1,20 +0,0 @@
-
-
-
{{title}}
-
Products
-
-
-
-
-
- Product Listing |
-
-
-
-
- {{p}} |
-
-
-
-
-
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/app/app.component.spec.ts b/examples/demo-template/angular2-product-app/src/main/frontend/src/app/app.component.spec.ts
deleted file mode 100644
index f5fc6c1dea..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/app/app.component.spec.ts
+++ /dev/null
@@ -1,66 +0,0 @@
-import { TestBed, async } from '@angular/core/testing';
-import { AppComponent } from './app.component';
-import { KeycloakService } from './keycloak/keycloak.service';
-import {
- HttpModule,
- XHRBackend,
- ResponseOptions,
- Response,
- RequestMethod
-} from '@angular/http';
-import {
- MockBackend,
- MockConnection
-} from '@angular/http/testing/mock_backend';
-
-
-describe('AppComponent', () => {
- beforeEach(() => {
- TestBed.configureTestingModule({
- imports: [HttpModule],
- providers: [
- {
- provide: XHRBackend,
- useClass: MockBackend
- },
- {
- provide: KeycloakService
- }
- ],
- declarations: [
- AppComponent
- ],
- });
- TestBed.compileComponents();
- });
-
- it('should create the app', async(() => {
- const fixture = TestBed.createComponent(AppComponent);
- const app = fixture.debugElement.componentInstance;
- expect(app).toBeTruthy();
- }));
-
- it(`should have as title 'Angular2 Product'`, async(() => {
- const fixture = TestBed.createComponent(AppComponent);
- const app = fixture.debugElement.componentInstance;
- expect(app.title).toEqual('Angular2 Product');
- }));
-
- it('should render title in a h1 tag', async(() => {
- const fixture = TestBed.createComponent(AppComponent);
- fixture.detectChanges();
- const compiled = fixture.debugElement.nativeElement;
- expect(compiled.querySelector('h1').textContent).toContain('Angular2 Product');
- }));
-
- it('should render product list', async(() => {
- const fixture = TestBed.createComponent(AppComponent);
- fixture.componentInstance.products = ['iphone', 'ipad', 'ipod'];
- fixture.detectChanges();
- const compiled = fixture.debugElement.nativeElement;
- expect(compiled.querySelector('table thead tr th').textContent).toContain('Product Listing');
- expect(compiled.querySelectorAll('table tbody tr td')[0].textContent).toContain('iphone');
- expect(compiled.querySelectorAll('table tbody tr td')[1].textContent).toContain('ipad');
- expect(compiled.querySelectorAll('table tbody tr td')[2].textContent).toContain('ipod');
- }));
-});
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/app/app.component.ts b/examples/demo-template/angular2-product-app/src/main/frontend/src/app/app.component.ts
deleted file mode 100644
index 28b9b98202..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/app/app.component.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-import { Component } from '@angular/core';
-
-import {Http, Headers, RequestOptions, Response} from '@angular/http';
-import {Observable} from 'rxjs/Observable';
-import 'rxjs/add/operator/map';
-import {KeycloakService} from './keycloak/keycloak.service';
-
-import { environment } from '../environments/environment';
-
-@Component({
- selector: 'app-root',
- templateUrl: './app.component.html',
- styleUrls: ['./app.component.css']
-})
-export class AppComponent {
- title = 'Angular2 Product';
-
- products: string[] = [];
-
- constructor(private http: Http, private kc: KeycloakService) {}
-
- logout() {
- this.kc.logout();
- }
-
- reloadData() {
- this.http.get(environment.serviceBaseUrl + '/products')
- .map(res => res.json())
- .subscribe(prods => this.products = prods,
- error => console.log(error));
- }
-}
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/app/app.module.ts b/examples/demo-template/angular2-product-app/src/main/frontend/src/app/app.module.ts
deleted file mode 100644
index 99a60f9171..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/app/app.module.ts
+++ /dev/null
@@ -1,24 +0,0 @@
-import { BrowserModule } from '@angular/platform-browser';
-import { NgModule } from '@angular/core';
-import { FormsModule } from '@angular/forms';
-import { HttpModule } from '@angular/http';
-import { KeycloakService } from './keycloak/keycloak.service';
-import { KeycloakHttp, KEYCLOAK_HTTP_PROVIDER } from './keycloak/keycloak.http';
-import { AppComponent } from './app.component';
-
-@NgModule({
- declarations: [
- AppComponent
- ],
- imports: [
- BrowserModule,
- FormsModule,
- HttpModule
- ],
- providers: [
- KeycloakService,
- KEYCLOAK_HTTP_PROVIDER
- ],
- bootstrap: [AppComponent]
-})
-export class AppModule { }
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/app/keycloak/keycloak.http.spec.ts b/examples/demo-template/angular2-product-app/src/main/frontend/src/app/keycloak/keycloak.http.spec.ts
deleted file mode 100644
index 7ea175e076..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/app/keycloak/keycloak.http.spec.ts
+++ /dev/null
@@ -1,47 +0,0 @@
-import {Injectable, ReflectiveInjector} from '@angular/core';
-import {async, fakeAsync, tick} from '@angular/core/testing';
-import {BaseRequestOptions, ConnectionBackend, Http, RequestOptions} from '@angular/http';
-import {Response, ResponseOptions} from '@angular/http';
-import {MockBackend, MockConnection} from '@angular/http/testing';
-
-import { KeycloakHttp, KEYCLOAK_HTTP_PROVIDER, keycloakHttpFactory } from './keycloak.http';
-import { KeycloakService } from './keycloak.service';
-
-@Injectable()
-class MockKeycloakService extends KeycloakService {
- getToken(): Promise {
- return Promise.resolve('hello');
- }
-}
-
-describe('KeycloakHttp', () => {
-
- let injector: ReflectiveInjector;
- let backend: MockBackend;
- let lastConnection: MockConnection;
- let http: Http;
-
- beforeEach(() => {
- injector = ReflectiveInjector.resolveAndCreate([
- {provide: ConnectionBackend, useClass: MockBackend},
- {provide: RequestOptions, useClass: BaseRequestOptions},
- {provide: KeycloakService, useClass: MockKeycloakService},
- {
- provide: Http,
- useFactory: keycloakHttpFactory,
- deps: [ConnectionBackend, RequestOptions, KeycloakService]
- }
- ]);
- http = injector.get(Http);
- backend = injector.get(ConnectionBackend) as MockBackend;
- backend.connections.subscribe((c: MockConnection) => lastConnection = c);
- });
-
- it('should set Authorization header', fakeAsync(() => {
- http.get('foo').subscribe(r => console.log(r));
- tick();
- expect(lastConnection).toBeDefined('no http service connection at all?');
- expect(lastConnection.request.headers.get('Authorization')).toBe('Bearer hello');
- }));
-
-});
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/app/keycloak/keycloak.http.ts b/examples/demo-template/angular2-product-app/src/main/frontend/src/app/keycloak/keycloak.http.ts
deleted file mode 100644
index 07887bdd01..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/app/keycloak/keycloak.http.ts
+++ /dev/null
@@ -1,42 +0,0 @@
-import {Injectable} from '@angular/core';
-import {Http, Request, XHRBackend, ConnectionBackend, RequestOptions, RequestOptionsArgs, Response, Headers} from '@angular/http';
-
-import {KeycloakService} from './keycloak.service';
-import {Observable} from 'rxjs/Rx';
-
-/**
- * This provides a wrapper over the ng2 Http class that insures tokens are refreshed on each request.
- */
-@Injectable()
-export class KeycloakHttp extends Http {
- constructor(_backend: ConnectionBackend, _defaultOptions: RequestOptions, private _keycloakService: KeycloakService) {
- super(_backend, _defaultOptions);
- }
-
- request(url: string | Request, options?: RequestOptionsArgs): Observable {
- const tokenPromise: Promise = this._keycloakService.getToken();
- const tokenObservable: Observable = Observable.fromPromise(tokenPromise);
-
- if (typeof url === 'string') {
- return tokenObservable.map(token => {
- const authOptions = new RequestOptions({headers: new Headers({'Authorization': 'Bearer ' + token})});
- return new RequestOptions().merge(options).merge(authOptions);
- }).concatMap(opts => super.request(url, opts));
- } else if (url instanceof Request) {
- return tokenObservable.map(token => {
- url.headers.set('Authorization', 'Bearer ' + token);
- return url;
- }).concatMap(request => super.request(request));
- }
- }
-}
-
-export function keycloakHttpFactory(backend: XHRBackend, defaultOptions: RequestOptions, keycloakService: KeycloakService) {
- return new KeycloakHttp(backend, defaultOptions, keycloakService);
-}
-
-export const KEYCLOAK_HTTP_PROVIDER = {
- provide: Http,
- useFactory: keycloakHttpFactory,
- deps: [XHRBackend, RequestOptions, KeycloakService]
-};
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/app/keycloak/keycloak.service.ts b/examples/demo-template/angular2-product-app/src/main/frontend/src/app/keycloak/keycloak.service.ts
deleted file mode 100644
index 9ecf4469ad..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/app/keycloak/keycloak.service.ts
+++ /dev/null
@@ -1,60 +0,0 @@
-import {Injectable} from '@angular/core';
-
-import { environment } from '../../environments/environment';
-
-declare var Keycloak: any;
-
-@Injectable()
-export class KeycloakService {
- static auth: any = {};
-
- static init(): Promise {
- const keycloakAuth: any = Keycloak({
- url: environment.keykloakBaseUrl,
- realm: 'demo',
- clientId: 'angular2-product',
- });
-
- KeycloakService.auth.loggedIn = false;
-
- return new Promise((resolve, reject) => {
- keycloakAuth.init({ onLoad: 'login-required' })
- .success(() => {
- KeycloakService.auth.loggedIn = true;
- KeycloakService.auth.authz = keycloakAuth;
- KeycloakService.auth.logoutUrl = keycloakAuth.authServerUrl
- + '/realms/demo/protocol/openid-connect/logout?redirect_uri='
- + document.baseURI;
- resolve();
- })
- .error(() => {
- reject();
- });
- });
- }
-
- logout() {
- console.log('*** LOGOUT');
- KeycloakService.auth.loggedIn = false;
- KeycloakService.auth.authz = null;
-
- window.location.href = KeycloakService.auth.logoutUrl;
- }
-
- getToken(): Promise {
- return new Promise((resolve, reject) => {
- if (KeycloakService.auth.authz.token) {
- KeycloakService.auth.authz
- .updateToken(5)
- .success(() => {
- resolve(KeycloakService.auth.authz.token);
- })
- .error(() => {
- reject('Failed to refresh token');
- });
- } else {
- reject('Not loggen in');
- }
- });
- }
-}
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/assets/.gitkeep b/examples/demo-template/angular2-product-app/src/main/frontend/src/assets/.gitkeep
deleted file mode 100644
index e69de29bb2..0000000000
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/environments/environment.prod.ts b/examples/demo-template/angular2-product-app/src/main/frontend/src/environments/environment.prod.ts
deleted file mode 100644
index 57a8df3cec..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/environments/environment.prod.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export const environment = {
- production: true,
- keykloakBaseUrl: 'http://localhost:8080/auth',
- serviceBaseUrl: 'http://localhost:8080/database'
-};
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/environments/environment.ts b/examples/demo-template/angular2-product-app/src/main/frontend/src/environments/environment.ts
deleted file mode 100644
index f93bdd5dd7..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/environments/environment.ts
+++ /dev/null
@@ -1,10 +0,0 @@
-// The file contents for the current environment will overwrite these during build.
-// The build system defaults to the dev environment which uses `environment.ts`, but if you do
-// `ng build --env=prod` then `environment.prod.ts` will be used instead.
-// The list of which env maps to which file can be found in `.angular-cli.json`.
-
-export const environment = {
- production: false,
- keykloakBaseUrl: 'http://localhost:8080/auth',
- serviceBaseUrl: 'http://localhost:8080/database'
-};
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/environments/environment.war.ts b/examples/demo-template/angular2-product-app/src/main/frontend/src/environments/environment.war.ts
deleted file mode 100644
index 6bb464d425..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/environments/environment.war.ts
+++ /dev/null
@@ -1,5 +0,0 @@
-export const environment = {
- production: false,
- keykloakBaseUrl: '/auth',
- serviceBaseUrl: '/database'
-};
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/favicon.ico b/examples/demo-template/angular2-product-app/src/main/frontend/src/favicon.ico
deleted file mode 100644
index 8081c7ceaf..0000000000
Binary files a/examples/demo-template/angular2-product-app/src/main/frontend/src/favicon.ico and /dev/null differ
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/index.html b/examples/demo-template/angular2-product-app/src/main/frontend/src/index.html
deleted file mode 100644
index 5b15f36cd3..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/index.html
+++ /dev/null
@@ -1,15 +0,0 @@
-
-
-
-
- Angular2ProductApp
-
-
-
-
-
-
-
- Loading...
-
-
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/main.ts b/examples/demo-template/angular2-product-app/src/main/frontend/src/main.ts
deleted file mode 100644
index 8bd5ab58e1..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/main.ts
+++ /dev/null
@@ -1,14 +0,0 @@
-import { enableProdMode } from '@angular/core';
-import { platformBrowserDynamic } from '@angular/platform-browser-dynamic';
-
-import { AppModule } from './app/app.module';
-import { environment } from './environments/environment';
-import { KeycloakService } from './app/keycloak/keycloak.service';
-
-if (environment.production) {
- enableProdMode();
-}
-
-KeycloakService.init()
- .then(() => platformBrowserDynamic().bootstrapModule(AppModule))
- .catch(e => window.location.reload());
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/polyfills.ts b/examples/demo-template/angular2-product-app/src/main/frontend/src/polyfills.ts
deleted file mode 100644
index 53bdaf1b86..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/polyfills.ts
+++ /dev/null
@@ -1,68 +0,0 @@
-/**
- * This file includes polyfills needed by Angular and is loaded before the app.
- * You can add your own extra polyfills to this file.
- *
- * This file is divided into 2 sections:
- * 1. Browser polyfills. These are applied before loading ZoneJS and are sorted by browsers.
- * 2. Application imports. Files imported after ZoneJS that should be loaded before your main
- * file.
- *
- * The current setup is for so-called "evergreen" browsers; the last versions of browsers that
- * automatically update themselves. This includes Safari >= 10, Chrome >= 55 (including Opera),
- * Edge >= 13 on the desktop, and iOS 10 and Chrome on mobile.
- *
- * Learn more in https://angular.io/docs/ts/latest/guide/browser-support.html
- */
-
-/***************************************************************************************************
- * BROWSER POLYFILLS
- */
-
-/** IE9, IE10 and IE11 requires all of the following polyfills. **/
-// import 'core-js/es6/symbol';
-// import 'core-js/es6/object';
-// import 'core-js/es6/function';
-// import 'core-js/es6/parse-int';
-// import 'core-js/es6/parse-float';
-// import 'core-js/es6/number';
-// import 'core-js/es6/math';
-// import 'core-js/es6/string';
-// import 'core-js/es6/date';
-// import 'core-js/es6/array';
-// import 'core-js/es6/regexp';
-// import 'core-js/es6/map';
-// import 'core-js/es6/set';
-
-/** IE10 and IE11 requires the following for NgClass support on SVG elements */
-// import 'classlist.js'; // Run `npm install --save classlist.js`.
-
-/** IE10 and IE11 requires the following to support `@angular/animation`. */
-// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
-
-
-/** Evergreen browsers require these. **/
-import 'core-js/es6/reflect';
-import 'core-js/es7/reflect';
-
-
-/** ALL Firefox browsers require the following to support `@angular/animation`. **/
-// import 'web-animations-js'; // Run `npm install --save web-animations-js`.
-
-
-
-/***************************************************************************************************
- * Zone JS is required by Angular itself.
- */
-import 'zone.js/dist/zone'; // Included with Angular CLI.
-
-
-
-/***************************************************************************************************
- * APPLICATION IMPORTS
- */
-
-/**
- * Date, currency, decimal and percent pipes.
- * Needed for: All but Chrome, Firefox, Edge, IE11 and Safari 10
- */
-// import 'intl'; // Run `npm install --save intl`.
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/styles.css b/examples/demo-template/angular2-product-app/src/main/frontend/src/styles.css
deleted file mode 100644
index 90d4ee0072..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/styles.css
+++ /dev/null
@@ -1 +0,0 @@
-/* You can add global styles to this file, and also import other style files */
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/test.ts b/examples/demo-template/angular2-product-app/src/main/frontend/src/test.ts
deleted file mode 100644
index 9bf72267e9..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/test.ts
+++ /dev/null
@@ -1,32 +0,0 @@
-// This file is required by karma.conf.js and loads recursively all the .spec and framework files
-
-import 'zone.js/dist/long-stack-trace-zone';
-import 'zone.js/dist/proxy.js';
-import 'zone.js/dist/sync-test';
-import 'zone.js/dist/jasmine-patch';
-import 'zone.js/dist/async-test';
-import 'zone.js/dist/fake-async-test';
-import { getTestBed } from '@angular/core/testing';
-import {
- BrowserDynamicTestingModule,
- platformBrowserDynamicTesting
-} from '@angular/platform-browser-dynamic/testing';
-
-// Unfortunately there's no typing for the `__karma__` variable. Just declare it as any.
-declare var __karma__: any;
-declare var require: any;
-
-// Prevent Karma from running prematurely.
-__karma__.loaded = function () {};
-
-// First, initialize the Angular testing environment.
-getTestBed().initTestEnvironment(
- BrowserDynamicTestingModule,
- platformBrowserDynamicTesting()
-);
-// Then we find all the tests.
-const context = require.context('./', true, /\.spec\.ts$/);
-// And load the modules.
-context.keys().map(context);
-// Finally, start Karma to run the tests.
-__karma__.start();
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/src/tsconfig.json b/examples/demo-template/angular2-product-app/src/main/frontend/src/tsconfig.json
deleted file mode 100644
index 40fe5c0575..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/src/tsconfig.json
+++ /dev/null
@@ -1,21 +0,0 @@
-{
- "compilerOptions": {
- "baseUrl": "",
- "declaration": false,
- "emitDecoratorMetadata": true,
- "experimentalDecorators": true,
- "lib": [
- "es2016",
- "dom"
- ],
- "mapRoot": "./",
- "module": "es2015",
- "moduleResolution": "node",
- "outDir": "../dist/out-tsc",
- "sourceMap": true,
- "target": "es5",
- "typeRoots": [
- "../node_modules/@types"
- ]
- }
-}
diff --git a/examples/demo-template/angular2-product-app/src/main/frontend/tslint.json b/examples/demo-template/angular2-product-app/src/main/frontend/tslint.json
deleted file mode 100644
index 9113f1368b..0000000000
--- a/examples/demo-template/angular2-product-app/src/main/frontend/tslint.json
+++ /dev/null
@@ -1,116 +0,0 @@
-{
- "rulesDirectory": [
- "node_modules/codelyzer"
- ],
- "rules": {
- "callable-types": true,
- "class-name": true,
- "comment-format": [
- true,
- "check-space"
- ],
- "curly": true,
- "eofline": true,
- "forin": true,
- "import-blacklist": [true, "rxjs"],
- "import-spacing": true,
- "indent": [
- true,
- "spaces"
- ],
- "interface-over-type-literal": true,
- "label-position": true,
- "max-line-length": [
- true,
- 140
- ],
- "member-access": false,
- "member-ordering": [
- true,
- "static-before-instance",
- "variables-before-functions"
- ],
- "no-arg": true,
- "no-bitwise": true,
- "no-console": [
- true,
- "debug",
- "info",
- "time",
- "timeEnd",
- "trace"
- ],
- "no-construct": true,
- "no-debugger": true,
- "no-duplicate-variable": true,
- "no-empty": false,
- "no-empty-interface": true,
- "no-eval": true,
- "no-inferrable-types": [true, "ignore-params"],
- "no-shadowed-variable": true,
- "no-string-literal": false,
- "no-string-throw": true,
- "no-switch-case-fall-through": true,
- "no-trailing-whitespace": true,
- "no-unused-expression": true,
- "no-use-before-declare": true,
- "no-var-keyword": true,
- "object-literal-sort-keys": false,
- "one-line": [
- true,
- "check-open-brace",
- "check-catch",
- "check-else",
- "check-whitespace"
- ],
- "prefer-const": true,
- "quotemark": [
- true,
- "single"
- ],
- "radix": true,
- "semicolon": [
- "always"
- ],
- "triple-equals": [
- true,
- "allow-null-check"
- ],
- "typedef-whitespace": [
- true,
- {
- "call-signature": "nospace",
- "index-signature": "nospace",
- "parameter": "nospace",
- "property-declaration": "nospace",
- "variable-declaration": "nospace"
- }
- ],
- "typeof-compare": true,
- "unified-signatures": true,
- "variable-name": false,
- "whitespace": [
- true,
- "check-branch",
- "check-decl",
- "check-operator",
- "check-separator",
- "check-type"
- ],
-
- "directive-selector": [true, "attribute", "app", "camelCase"],
- "component-selector": [true, "element", "app", "kebab-case"],
- "use-input-property-decorator": true,
- "use-output-property-decorator": true,
- "use-host-property-decorator": true,
- "no-input-rename": true,
- "no-output-rename": true,
- "use-life-cycle-interface": true,
- "use-pipe-transform-interface": true,
- "component-class-suffix": true,
- "directive-class-suffix": true,
- "no-access-missing-member": true,
- "templates-use-public": true,
- "invoke-injectable": true
- }
-}
diff --git a/examples/demo-template/pom.xml b/examples/demo-template/pom.xml
index a737bf86ea..bd239fb9cf 100755
--- a/examples/demo-template/pom.xml
+++ b/examples/demo-template/pom.xml
@@ -51,7 +51,6 @@
example-ear
admin-access-app
angular-product-app
- angular2-product-app
database-service
third-party
third-party-cdi