├── .editorconfig ├── .gitignore ├── .travis.yml ├── .vscode └── settings.json ├── CHANGELOG.md ├── LICENSE ├── README.md ├── angular.json ├── dist └── ng2-ui-auth │ ├── bundles │ ├── ng2-ui-auth.umd.js │ ├── ng2-ui-auth.umd.js.map │ ├── ng2-ui-auth.umd.min.js │ └── ng2-ui-auth.umd.min.js.map │ ├── esm2015 │ ├── lib │ │ ├── auth.service.js │ │ ├── browser-storage.service.js │ │ ├── config-interfaces.js │ │ ├── config-providers.js │ │ ├── config.service.js │ │ ├── interceptor.service.js │ │ ├── local.service.js │ │ ├── ng2-ui-auth.module.js │ │ ├── oauth-service.js │ │ ├── oauth.service.js │ │ ├── oauth1.service.js │ │ ├── oauth2.service.js │ │ ├── popup.service.js │ │ ├── shared.service.js │ │ ├── storage-service.js │ │ ├── storage-type.enum.js │ │ └── utils.js │ ├── ng2-ui-auth.js │ └── public_api.js │ ├── esm5 │ ├── lib │ │ ├── auth.service.js │ │ ├── browser-storage.service.js │ │ ├── config-interfaces.js │ │ ├── config-providers.js │ │ ├── config.service.js │ │ ├── interceptor.service.js │ │ ├── local.service.js │ │ ├── ng2-ui-auth.module.js │ │ ├── oauth-service.js │ │ ├── oauth.service.js │ │ ├── oauth1.service.js │ │ ├── oauth2.service.js │ │ ├── popup.service.js │ │ ├── shared.service.js │ │ ├── storage-service.js │ │ ├── storage-type.enum.js │ │ └── utils.js │ ├── ng2-ui-auth.js │ └── public_api.js │ ├── fesm2015 │ ├── ng2-ui-auth.js │ └── ng2-ui-auth.js.map │ ├── fesm5 │ ├── ng2-ui-auth.js │ └── ng2-ui-auth.js.map │ ├── lib │ ├── auth.service.d.ts │ ├── browser-storage.service.d.ts │ ├── config-interfaces.d.ts │ ├── config-providers.d.ts │ ├── config.service.d.ts │ ├── interceptor.service.d.ts │ ├── local.service.d.ts │ ├── ng2-ui-auth.module.d.ts │ ├── oauth-service.d.ts │ ├── oauth.service.d.ts │ ├── oauth1.service.d.ts │ ├── oauth2.service.d.ts │ ├── popup.service.d.ts │ ├── shared.service.d.ts │ ├── storage-service.d.ts │ ├── storage-type.enum.d.ts │ └── utils.d.ts │ ├── ng2-ui-auth.d.ts │ ├── ng2-ui-auth.metadata.json │ ├── package.json │ └── public_api.d.ts ├── package-lock.json ├── package.json ├── projects └── ng2-ui-auth │ ├── karma.conf.js │ ├── ng-package.json │ ├── ng-package.prod.json │ ├── package.json │ ├── src │ ├── lib │ │ ├── auth.service.spec.ts │ │ ├── auth.service.ts │ │ ├── browser-storage.service.spec.ts │ │ ├── browser-storage.service.ts │ │ ├── config-interfaces.ts │ │ ├── config-providers.ts │ │ ├── config.service.spec.ts │ │ ├── config.service.ts │ │ ├── interceptor.service.spec.ts │ │ ├── interceptor.service.ts │ │ ├── local.service.spec.ts │ │ ├── local.service.ts │ │ ├── ng2-ui-auth.module.ts │ │ ├── oauth-service.ts │ │ ├── oauth.service.spec.ts │ │ ├── oauth.service.ts │ │ ├── oauth1.service.spec.ts │ │ ├── oauth1.service.ts │ │ ├── oauth2.service.spec.ts │ │ ├── oauth2.service.ts │ │ ├── popup.service.spec.ts │ │ ├── popup.service.ts │ │ ├── shared.service.spec.ts │ │ ├── shared.service.ts │ │ ├── storage-service.ts │ │ ├── storage-type.enum.ts │ │ └── utils.ts │ ├── public_api.ts │ └── test.ts │ ├── tsconfig.lib.json │ ├── tsconfig.spec.json │ └── tslint.json ├── tsconfig.json └── tslint.json /.editorconfig: -------------------------------------------------------------------------------- 1 | # Editor configuration, see http://editorconfig.org 2 | root = true 3 | 4 | [*] 5 | charset = utf-8 6 | indent_style = space 7 | indent_size = 2 8 | insert_final_newline = true 9 | trim_trailing_whitespace = true 10 | 11 | [*.md] 12 | max_line_length = off 13 | trim_trailing_whitespace = false 14 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # See http://help.github.com/ignore-files/ for more about ignoring files. 2 | 3 | # compiled output 4 | /tmp 5 | /out-tsc 6 | 7 | # dependencies 8 | /node_modules 9 | 10 | # IDEs and editors 11 | /.idea 12 | .project 13 | .classpath 14 | .c9/ 15 | *.launch 16 | .settings/ 17 | *.sublime-workspace 18 | 19 | # IDE - VSCode 20 | .vscode/* 21 | !.vscode/settings.json 22 | !.vscode/tasks.json 23 | !.vscode/launch.json 24 | !.vscode/extensions.json 25 | 26 | # misc 27 | /.sass-cache 28 | /connect.lock 29 | /coverage 30 | /libpeerconnection.log 31 | npm-debug.log 32 | yarn-error.log 33 | testem.log 34 | /typings 35 | 36 | # System Files 37 | .DS_Store 38 | Thumbs.db 39 | -------------------------------------------------------------------------------- /.travis.yml: -------------------------------------------------------------------------------- 1 | language: node_js 2 | node_js: 3 | - 'node' 4 | env: 5 | global: 6 | - GH_REF: github.com/ronzeidman/ng2-ui-auth 7 | script: 8 | - npm run build 9 | after_success: 10 | jobs: 11 | include: 12 | - stage: npm release 13 | node_js: 'node' 14 | script: 15 | - npm run build 16 | before_deploy: 17 | - cd dist/ng2-ui-auth 18 | deploy: 19 | provider: npm 20 | email: 'ron.zeidman@gmail.com' 21 | api_key: '$NPM_API_KEY' 22 | skip_cleanup: true 23 | on: 24 | tags: true 25 | -------------------------------------------------------------------------------- /.vscode/settings.json: -------------------------------------------------------------------------------- 1 | { 2 | "typescript.tsdk": "node_modules\\typescript\\lib" 3 | } -------------------------------------------------------------------------------- /CHANGELOG.md: -------------------------------------------------------------------------------- 1 | #### 10.0.1 2 | 3 | - using latest google api 4 | 5 | #### 10.0.0 6 | 7 | - support angular 8 8 | 9 | #### 9.1.0 10 | 11 | - added oauthOptions to the exchange for token flow in oauth 1.0a 12 | 13 | #### 9.0.0 14 | 15 | - using angular cli version 6 to build the library 16 | - StorageType is now a proper enum 17 | - Universal might be working now 18 | - Update providers function 19 | 20 | #### 8.0.1 21 | 22 | - fixed facebook and twitter config 23 | - fixed a bug in JwtInterceptor 24 | 25 | #### 8.0.0 26 | 27 | - added storage type 'none' and 'memory' and added StorageType "enum". 28 | - `forRoot` without options will give you the ability to inject your own config 29 | - you can decide to not inject the JwtInterceptor view `forRoot` function 30 | - issue #124: export IProviders 31 | - issue #121: ability to inject config 32 | - issue #122: ability to decode unicode characters 33 | - Angular 5.0.0 (for <5.0.0 use version 7.0.2) 34 | - Rxjs lettables 35 | - Total refactor, code is much cleaner, shorter and easier to read 36 | - #### BREAKING CHANGES: 37 | - Using HttpClient instead of Http 38 | - Using HttpClient Interceptor instead of JwtHttp 39 | - In the `exchangeForToken` flow (when you want to exchange authorization code given by the authorization endpoint with your server's token) this library now sends a body that looks like this instead of a flat mesh of the oauth options, oauth result and user data: 40 | 41 | ```js 42 | { 43 | "authorizationData": { 44 | //the same data sent to the auth endpoint 45 | }, 46 | "oauthData": { 47 | //the data received from the oauth endpoint 48 | }, 49 | "userData": { 50 | //additional data you've provided 51 | } 52 | } 53 | ``` 54 | 55 | - You don't need a class for the options and several options were removed (mostly because you can't make requests while you intercept requests...): 56 | - `defaultHeaders` - No need, you can create your own interceptor. 57 | - `tryTokenRefreshIfUnauthorized`, `refreshBeforeExpiration`, `autoRefreshToken`, `refreshUrl` - Removed since can't refresh while intercepting (if you come up with a clever idea how please send a pull request / issue) 58 | - changed the OauthOptions 59 | - removed `exchangeForToken` - was hard to use and nobody was using it 60 | - removed `responseParams` - was not in use 61 | - removed `scopePrefix` - you can just add it as the first param in `scope` 62 | - `scope` is only an array 63 | - No more `requiredUrlParams`/`optionalUrlParams` confusion! introducing `additionalUrlParams` - just add a param name, and value and it will be added to the request, if the value is `undefined` the param will not be added, if the value is `null` it will be added without a value, if the value is a function, it will run the function. 64 | 65 | #### 7.0.2 66 | 67 | - issue #105: Make the library FESM15 includeable by using ng-packagr. 68 | 69 | #### 7.0.1 70 | 71 | - issue #98: responseType = 'token' not returning control to client app 72 | - pull request #103: update packages + fixed support for TypeScript 2.4 73 | - `logout` now removes the token only if subscribing to it, to logout syncronically use `removeToken` instead. 74 | - issue #100: added visibleToolbar to popup options 75 | - removed `defaultUrlParams` customization, use `optionalUrlParams` instead 76 | - issue #81: support for 'cookie' & 'sessionCookie' (cookie without expiration) storage types 77 | 78 | **BREAKING CHANGE:** This version drops official support for angular 2.0 79 | 80 | #### 6.2.0 81 | 82 | - pull request #91: rename StorageService to BrowserStorageService + add BaseStorage. 83 | 84 | #### 6.1.6 85 | 86 | - fixed google new login 500 issue with undefined optional params 87 | 88 | #### 6.1.4 89 | 90 | - supporting angular 4 in package.json 91 | 92 | #### 6.1.3 93 | 94 | - pull request #83: avoid import Type from `src`. 95 | 96 | #### 6.1.2 97 | 98 | - pull request #82: throw 'Authentication Canceled' when on a cordova app 99 | - issue #78: added optional params on google provider 100 | - issue #77: added ability to change the exchangeForToken request method 101 | 102 | #### 6.1.0 103 | 104 | - pull request #73: universal support 105 | - throwing `new Error('Authentication Canceled')` when popup is closed prematurely so you could stop your spinners on `subscribe({..., error: err => , complete: () => })` 106 | 107 | #### 6.0.0 108 | 109 | - issue #68 - fixed issue with responseType='token' 110 | - issue #65 - added tryTokenRefreshIfUnauthorized (off by default) 111 | - pull request #64 & pull request #67 - added ability to change the httpService `Ng2UiAuthModule.forRootWithCustomHttp(config, {provide: JwtHttp, useClass: MyHttp, deps: [Http, SharedService, ConfigService]})` 112 | - **BREAKING CHANGE:** Replaced `Ng2UiAuthModule.getWithConfig(MyAuthConfig)` with `Ng2UiAuthModule.forRoot(MyAuthConfig)` to look more like other modules 113 | 114 | #### 5.0.0 115 | 116 | - might be breaking: changed out folder names, not linking to the bundled version by default because of webpack issues with the pre-bundled version 117 | - pull request #63 set token only when it's available 118 | - pull request #61 [expiration date] check payload is defined. 119 | - pull request #60 allow string as a scope option. 120 | - pull request #57 allow any type in http body. 121 | 122 | #### 4.1.1 123 | 124 | - `cordova` variable defaults to `window.cordova` 125 | - fixed issue with oauth 1 126 | 127 | #### 4.1.0 128 | 129 | - fix issue #47 using this library without server url causes exception. 130 | - switched concatMap with switchMap (should be a better fit for that scenerio) 131 | - added ability to force "exchangeForToken" by setting it to true in `IOauthOptions` 132 | - added ability to force "exchangeForToken" and provide your own implementation by providing an exchangeForToken function in `IOauthOptions` 133 | - fix issue #50 added ability to manually configure the `resolveToken` method via config 134 | - fix issue #50 tokenRoot and tokens received from data property did not resolve. 135 | 136 | #### 4.0.0 137 | 138 | - Aligned default config with Satellizer (added Spotify) 139 | - AOT compilation now works 140 | - Peer dependency is now ^2.0.0 141 | - **BREAKING CHANGE:** Changed service names to have "Service" postfix ("Auth" is now AuthService) all except JwtHttp which remains the same. 142 | - **BREAKING CHANGE:** Initializing the library works like this now: 143 | 144 | ```typescript 145 | export class MyAuthConfig extends CustomConfig { 146 | providers = {google: {clientId: GOOGLE_CLIENT_ID}}; 147 | } 148 | 149 | @NgModule({ 150 | imports: [ 151 | BrowserModule, 152 | HttpModule, 153 | Ng2UiAuthModule.getWithConfig(MyAuthConfig), 154 | ... 155 | ] 156 | ... 157 | ``` 158 | 159 | #### 3.2.5 160 | 161 | - Added "refresh token" flow, if you configure 'autoRefreshToken' to true then if you call a webservice when the token expires this library automatically sends it to the server using 'refreshUrl' endpoint (can be set in config default = '/auth/refresh') first and then sets a new token if it receives it and tries to call the original request. (issue #41) 162 | - Added 'state' to the 'optionalUrlParams' of google according to issue #43 163 | 164 | #### 3.2.2 165 | 166 | - after testing issue #29 should be fixed 167 | 168 | #### 3.2.1 169 | 170 | - reverting to 3.1.2 since the 3.2.0 fix was not enough 171 | 172 | #### 3.2.0 173 | 174 | - fixed issue #29: extend() did not work causing custom options of popup window size to not work and `authenticate('provider', userCustomData)` with user custom data to not work properly 175 | 176 | #### 3.1.2 177 | 178 | - fixed issue #27: added missing `authHeader` to `ICustomConfig` interface 179 | 180 | #### 3.1.0 181 | 182 | - support rc2 "withCredentials" http flag 183 | 184 | #### 3.0.5 185 | 186 | - fixed issue #25: signup should accept "string" user and custom body 187 | 188 | #### 3.0.3 189 | 190 | - made a different folder for declarations so typescript won't try to re-compile the library 191 | 192 | #### 3.0.2 193 | 194 | - fixed issue: Not able to send a string user, or the user in the options body. 195 | 196 | #### 3.0.0 197 | 198 | - updated to support rc.0 and hopefully above 199 | 200 | #### 2.1.0 201 | 202 | - using rollup to bundle (fixes warning in webpack import) 203 | - breaking change: adding default headers even without authentication 204 | - removed dependency on "flatMap" 205 | - updated peer dependencies to beta.12 206 | 207 | #### 2.0.0 208 | 209 | - breaking change: removed JWT_HTTP_PROVIDER, JwtHttp is provided in the default provider, 210 | - breaking change: all internal calls use JwtHttp for their calls instead of Http 211 | - added configurable default headers (`NG2_UI_AUTH_PROVIDERS({ defaultHeaders: {'Content-Type': 'application/json'}, providers: {google: {clientId: GOOGLE_CLIENT_ID}}})`) 212 | - added configurable token seperator (`NG2_UI_AUTH_PROVIDERS({ tokenSeparator: '-', providers: {google: {clientId: GOOGLE_CLIENT_ID}}})`) 213 | - fix for JwtHttp to support "Request" class as a parameter. 214 | 215 | #### 1.1.0 216 | 217 | - bundled the entire sources to dist/ng2-ui-auth.js and provided a minified version 218 | - added a provider for plain JwtHttp (JWT_HTTP_PROVIDER) 219 | - bumped peer dependency to beta.7 220 | 221 | #### 1.0.15 222 | 223 | - bumped to angular 2.0.0-beta.2 224 | - changed dependencies to angular2 being a "peerDependency" 225 | 226 | #### 1.0.14 227 | 228 | - fixed http "unlink" call 229 | 230 | #### 1.0.13 231 | 232 | - changed module from system to commonjs 233 | 234 | #### 1.0.10 235 | 236 | - Removed dependency on angular-jwt (you can now use the included JwtHttp) 237 | - Readded "authHeader" to the configuration 238 | - Added an api for getting token expiration date (auth.getExpirationDate()) 239 | - changed default token prefix and the name of the providers from SATELLIZER_PROVIDERS to NG2_UI_AUTH_PROVIDERS 240 | 241 | #### 1.0.9 242 | 243 | - everything is working! 244 | -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | The MIT License (MIT) 2 | 3 | Copyright (c) 2024 Ron Zeidman 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | 23 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | An angular2 repository for authentication based on angular1's satellizer (https://satellizer.herokuapp.com/#/ https://github.com/sahat/satellizer) library. To use this run npm install ng2-ui-auth --save. 2 | 3 | If you are migrating from version 7 or below, look at the changelog 4 | 5 | for a full client + server-side example: ronzeidman/ng2-ui-auth-example. 6 | for a Go Server and extended client example: pcdummy/ng2-ui-auth-example. 7 | Just modify your main app module: 8 | 9 | ```ts 10 | import {Ng2UiAuthModule} from 'ng2-ui-auth'; 11 | 12 | const GOOGLE_CLIENT_ID = '******\*\*******\*\*******\*\*******.apps.googleusercontent.com'; 13 | 14 | @NgModule({ 15 | imports: [ 16 | BrowserModule, 17 | HttpClientModule, 18 | Ng2UiAuthModule.forRoot({providers: {google: { clientId: GOOGLE_CLIENT_ID}}}), 19 | ... 20 | ] 21 | ... 22 | }) 23 | AppModule {} 24 | ``` 25 | 26 | I will update https://github.com/ronzeidman/ng2-ui-auth-example with a more current and simpler example soon. If someone wishes to update it and send a pull request, he is more than welcome to do so. 27 | 28 | If something doesn't work, feel free to issue a pull request and/or create a new issue, I'm not sure I'll be responsive though since I use it internally for my project and will only update and fix the repository if it affects my work. 29 | 30 | If someone thinks that some of my code can be written better I encourage you to inform me. 31 | -------------------------------------------------------------------------------- /angular.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "./node_modules/@angular/cli/lib/config/schema.json", 3 | "version": 1, 4 | "newProjectRoot": "projects", 5 | "projects": { 6 | "Ng2UiAuth": { 7 | "root": "projects/ng2-ui-auth", 8 | "sourceRoot": "projects/ng2-ui-auth/src", 9 | "projectType": "library", 10 | "prefix": "lib", 11 | "architect": { 12 | "build": { 13 | "builder": "@angular-devkit/build-ng-packagr:build", 14 | "options": { 15 | "tsConfig": "projects/ng2-ui-auth/tsconfig.lib.json", 16 | "project": "projects/ng2-ui-auth/ng-package.json" 17 | }, 18 | "configurations": { 19 | "production": { 20 | "project": "projects/ng2-ui-auth/ng-package.prod.json" 21 | } 22 | } 23 | }, 24 | "test": { 25 | "builder": "@angular-devkit/build-angular:karma", 26 | "options": { 27 | "main": "projects/ng2-ui-auth/src/test.ts", 28 | "tsConfig": "projects/ng2-ui-auth/tsconfig.spec.json", 29 | "karmaConfig": "projects/ng2-ui-auth/karma.conf.js" 30 | } 31 | }, 32 | "lint": { 33 | "builder": "@angular-devkit/build-angular:tslint", 34 | "options": { 35 | "tsConfig": ["projects/ng2-ui-auth/tsconfig.lib.json", "projects/ng2-ui-auth/tsconfig.spec.json"], 36 | "exclude": ["**/node_modules/**"] 37 | } 38 | } 39 | } 40 | } 41 | }, 42 | "defaultProject": "Ng2UiAuth" 43 | } 44 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm2015/lib/auth.service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | import { Injectable } from '@angular/core'; 6 | import { LocalService } from './local.service'; 7 | import { OauthService } from './oauth.service'; 8 | import { SharedService } from './shared.service'; 9 | export class AuthService { 10 | /** 11 | * @param {?} shared 12 | * @param {?} local 13 | * @param {?} oauth 14 | */ 15 | constructor(shared, local, oauth) { 16 | this.shared = shared; 17 | this.local = local; 18 | this.oauth = oauth; 19 | } 20 | /** 21 | * @template T 22 | * @param {?} user 23 | * @param {?=} url 24 | * @return {?} 25 | */ 26 | login(user, url) { 27 | return this.local.login(user, url); 28 | } 29 | /** 30 | * @template T 31 | * @param {?} user 32 | * @param {?=} url 33 | * @return {?} 34 | */ 35 | signup(user, url) { 36 | return this.local.signup(user, url); 37 | } 38 | /** 39 | * @return {?} 40 | */ 41 | logout() { 42 | return this.shared.logout(); 43 | } 44 | /** 45 | * @template T 46 | * @param {?} name 47 | * @param {?=} userData 48 | * @return {?} 49 | */ 50 | authenticate(name, userData) { 51 | return this.oauth.authenticate(name, userData); 52 | } 53 | /** 54 | * @template T 55 | * @param {?} name 56 | * @param {?=} userData 57 | * @return {?} 58 | */ 59 | link(name, userData) { 60 | return this.oauth.authenticate(name, userData); 61 | } 62 | /** 63 | * @template T 64 | * @param {?} provider 65 | * @param {?=} url 66 | * @return {?} 67 | */ 68 | unlink(provider, url) { 69 | return this.oauth.unlink(provider, url); 70 | } 71 | /** 72 | * @return {?} 73 | */ 74 | isAuthenticated() { 75 | return this.shared.isAuthenticated(); 76 | } 77 | /** 78 | * @return {?} 79 | */ 80 | getToken() { 81 | return this.shared.getToken(); 82 | } 83 | /** 84 | * @param {?} token 85 | * @return {?} 86 | */ 87 | setToken(token) { 88 | this.shared.setToken(token); 89 | } 90 | /** 91 | * @return {?} 92 | */ 93 | removeToken() { 94 | this.shared.removeToken(); 95 | } 96 | /** 97 | * @return {?} 98 | */ 99 | getPayload() { 100 | return this.shared.getPayload(); 101 | } 102 | /** 103 | * @param {?} type 104 | * @return {?} 105 | */ 106 | setStorageType(type) { 107 | return this.shared.setStorageType(type); 108 | } 109 | /** 110 | * @return {?} 111 | */ 112 | getExpirationDate() { 113 | return this.shared.getExpirationDate(); 114 | } 115 | } 116 | AuthService.decorators = [ 117 | { type: Injectable } 118 | ]; 119 | /** @nocollapse */ 120 | AuthService.ctorParameters = () => [ 121 | { type: SharedService }, 122 | { type: LocalService }, 123 | { type: OauthService } 124 | ]; 125 | if (false) { 126 | /** 127 | * @type {?} 128 | * @private 129 | */ 130 | AuthService.prototype.shared; 131 | /** 132 | * @type {?} 133 | * @private 134 | */ 135 | AuthService.prototype.local; 136 | /** 137 | * @type {?} 138 | * @private 139 | */ 140 | AuthService.prototype.oauth; 141 | } 142 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiYXV0aC5zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmcyLXVpLWF1dGgvIiwic291cmNlcyI6WyJsaWIvYXV0aC5zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBRTNDLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBSWpELE1BQU0sT0FBTyxXQUFXOzs7Ozs7SUFDdEIsWUFBb0IsTUFBcUIsRUFBVSxLQUFtQixFQUFVLEtBQW1CO1FBQS9FLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQVUsVUFBSyxHQUFMLEtBQUssQ0FBYztJQUFHLENBQUM7Ozs7Ozs7SUFFaEcsS0FBSyxDQUFrQyxJQUFxQixFQUFFLEdBQVk7UUFDL0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLEtBQUssQ0FBSSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDeEMsQ0FBQzs7Ozs7OztJQUVNLE1BQU0sQ0FBVSxJQUFxQixFQUFFLEdBQVk7UUFDeEQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBSSxJQUFJLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDekMsQ0FBQzs7OztJQUVNLE1BQU07UUFDWCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxFQUFFLENBQUM7SUFDOUIsQ0FBQzs7Ozs7OztJQUVNLFlBQVksQ0FBa0MsSUFBWSxFQUFFLFFBQWM7UUFDL0UsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBSSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7Ozs7OztJQUVNLElBQUksQ0FBa0MsSUFBWSxFQUFFLFFBQWM7UUFDdkUsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLFlBQVksQ0FBSSxJQUFJLEVBQUUsUUFBUSxDQUFDLENBQUM7SUFDcEQsQ0FBQzs7Ozs7OztJQUVNLE1BQU0sQ0FBVSxRQUFnQixFQUFFLEdBQVk7UUFDbkQsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLE1BQU0sQ0FBSSxRQUFRLEVBQUUsR0FBRyxDQUFDLENBQUM7SUFDN0MsQ0FBQzs7OztJQUVNLGVBQWU7UUFDcEIsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGVBQWUsRUFBRSxDQUFDO0lBQ3ZDLENBQUM7Ozs7SUFFTSxRQUFRO1FBQ2IsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRSxDQUFDO0lBQ2hDLENBQUM7Ozs7O0lBRU0sUUFBUSxDQUFDLEtBQXNCO1FBQ3BDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLEtBQUssQ0FBQyxDQUFDO0lBQzlCLENBQUM7Ozs7SUFFTSxXQUFXO1FBQ2hCLElBQUksQ0FBQyxNQUFNLENBQUMsV0FBVyxFQUFFLENBQUM7SUFDNUIsQ0FBQzs7OztJQUVNLFVBQVU7UUFDZixPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsVUFBVSxFQUFFLENBQUM7SUFDbEMsQ0FBQzs7Ozs7SUFFTSxjQUFjLENBQUMsSUFBaUI7UUFDckMsT0FBTyxJQUFJLENBQUMsTUFBTSxDQUFDLGNBQWMsQ0FBQyxJQUFJLENBQUMsQ0FBQztJQUMxQyxDQUFDOzs7O0lBRU0saUJBQWlCO1FBQ3RCLE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxpQkFBaUIsRUFBRSxDQUFDO0lBQ3pDLENBQUM7OztZQXRERixVQUFVOzs7O1lBSEYsYUFBYTtZQUZiLFlBQVk7WUFDWixZQUFZOzs7Ozs7O0lBTVAsNkJBQTZCOzs7OztJQUFFLDRCQUEyQjs7Ozs7SUFBRSw0QkFBMkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgTG9jYWxTZXJ2aWNlIH0gZnJvbSAnLi9sb2NhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2F1dGhTZXJ2aWNlIH0gZnJvbSAnLi9vYXV0aC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJy4vc2hhcmVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlVHlwZSB9IGZyb20gJy4vc3RvcmFnZS10eXBlLmVudW0nO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgQXV0aFNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2hhcmVkOiBTaGFyZWRTZXJ2aWNlLCBwcml2YXRlIGxvY2FsOiBMb2NhbFNlcnZpY2UsIHByaXZhdGUgb2F1dGg6IE9hdXRoU2VydmljZSkge31cclxuXHJcbiAgcHVibGljIGxvZ2luPFQgZXh0ZW5kcyBzdHJpbmcgfCBvYmplY3QgPSBhbnk+KHVzZXI6IHN0cmluZyB8IG9iamVjdCwgdXJsPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5sb2NhbC5sb2dpbjxUPih1c2VyLCB1cmwpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNpZ251cDxUID0gYW55Pih1c2VyOiBzdHJpbmcgfCBvYmplY3QsIHVybD86IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMubG9jYWwuc2lnbnVwPFQ+KHVzZXIsIHVybCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgbG9nb3V0KCk6IE9ic2VydmFibGU8dm9pZD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hhcmVkLmxvZ291dCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGF1dGhlbnRpY2F0ZTxUIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nID0gYW55PihuYW1lOiBzdHJpbmcsIHVzZXJEYXRhPzogYW55KTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5vYXV0aC5hdXRoZW50aWNhdGU8VD4obmFtZSwgdXNlckRhdGEpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGxpbms8VCBleHRlbmRzIG9iamVjdCB8IHN0cmluZyA9IGFueT4obmFtZTogc3RyaW5nLCB1c2VyRGF0YT86IGFueSk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMub2F1dGguYXV0aGVudGljYXRlPFQ+KG5hbWUsIHVzZXJEYXRhKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1bmxpbms8VCA9IGFueT4ocHJvdmlkZXI6IHN0cmluZywgdXJsPzogc3RyaW5nKTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICByZXR1cm4gdGhpcy5vYXV0aC51bmxpbms8VD4ocHJvdmlkZXIsIHVybCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgaXNBdXRoZW50aWNhdGVkKCk6IGJvb2xlYW4ge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hhcmVkLmlzQXV0aGVudGljYXRlZCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIGdldFRva2VuKCk6IHN0cmluZyB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hhcmVkLmdldFRva2VuKCk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgc2V0VG9rZW4odG9rZW46IHN0cmluZyB8IG9iamVjdCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaGFyZWQuc2V0VG9rZW4odG9rZW4pO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHJlbW92ZVRva2VuKCk6IHZvaWQge1xyXG4gICAgdGhpcy5zaGFyZWQucmVtb3ZlVG9rZW4oKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBnZXRQYXlsb2FkKCk6IGFueSB7XHJcbiAgICByZXR1cm4gdGhpcy5zaGFyZWQuZ2V0UGF5bG9hZCgpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNldFN0b3JhZ2VUeXBlKHR5cGU6IFN0b3JhZ2VUeXBlKTogYm9vbGVhbiB7XHJcbiAgICByZXR1cm4gdGhpcy5zaGFyZWQuc2V0U3RvcmFnZVR5cGUodHlwZSk7XHJcbiAgfVxyXG5cclxuICBwdWJsaWMgZ2V0RXhwaXJhdGlvbkRhdGUoKTogRGF0ZSB8IG51bGwge1xyXG4gICAgcmV0dXJuIHRoaXMuc2hhcmVkLmdldEV4cGlyYXRpb25EYXRlKCk7XHJcbiAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm2015/lib/config-interfaces.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | /** 6 | * @record 7 | */ 8 | export function IPopupOptions() { } 9 | if (false) { 10 | /** @type {?|undefined} */ 11 | IPopupOptions.prototype.width; 12 | /** @type {?|undefined} */ 13 | IPopupOptions.prototype.height; 14 | /** @type {?|undefined} */ 15 | IPopupOptions.prototype.left; 16 | /** @type {?|undefined} */ 17 | IPopupOptions.prototype.top; 18 | /** @type {?|undefined} */ 19 | IPopupOptions.prototype.visibleToolbar; 20 | } 21 | /** 22 | * @record 23 | */ 24 | export function IOauth1Options() { } 25 | if (false) { 26 | /** @type {?|undefined} */ 27 | IOauth1Options.prototype.url; 28 | /** @type {?|undefined} */ 29 | IOauth1Options.prototype.name; 30 | /** @type {?|undefined} */ 31 | IOauth1Options.prototype.redirectUri; 32 | /** @type {?|undefined} */ 33 | IOauth1Options.prototype.popupOptions; 34 | /** @type {?|undefined} */ 35 | IOauth1Options.prototype.authorizationEndpoint; 36 | /** @type {?|undefined} */ 37 | IOauth1Options.prototype.oauthType; 38 | /** @type {?|undefined} */ 39 | IOauth1Options.prototype.method; 40 | } 41 | /** 42 | * @record 43 | */ 44 | export function IOauth2Options() { } 45 | if (false) { 46 | /** @type {?|undefined} */ 47 | IOauth2Options.prototype.url; 48 | /** @type {?|undefined} */ 49 | IOauth2Options.prototype.name; 50 | /** @type {?|undefined} */ 51 | IOauth2Options.prototype.redirectUri; 52 | /** @type {?|undefined} */ 53 | IOauth2Options.prototype.popupOptions; 54 | /** @type {?|undefined} */ 55 | IOauth2Options.prototype.authorizationEndpoint; 56 | /** @type {?|undefined} */ 57 | IOauth2Options.prototype.oauthType; 58 | /** @type {?|undefined} */ 59 | IOauth2Options.prototype.method; 60 | /** @type {?|undefined} */ 61 | IOauth2Options.prototype.responseType; 62 | /** @type {?|undefined} */ 63 | IOauth2Options.prototype.clientId; 64 | /** @type {?|undefined} */ 65 | IOauth2Options.prototype.additionalUrlParams; 66 | /** @type {?|undefined} */ 67 | IOauth2Options.prototype.scopeDelimiter; 68 | /** @type {?|undefined} */ 69 | IOauth2Options.prototype.scope; 70 | /** @type {?|undefined} */ 71 | IOauth2Options.prototype.state; 72 | } 73 | /** 74 | * @record 75 | */ 76 | export function IProviders() { } 77 | /** 78 | * @record 79 | */ 80 | export function IConfigOptions() { } 81 | if (false) { 82 | /** @type {?} */ 83 | IConfigOptions.prototype.tokenRoot; 84 | /** @type {?} */ 85 | IConfigOptions.prototype.cordova; 86 | /** @type {?} */ 87 | IConfigOptions.prototype.baseUrl; 88 | /** @type {?} */ 89 | IConfigOptions.prototype.loginUrl; 90 | /** @type {?} */ 91 | IConfigOptions.prototype.signupUrl; 92 | /** @type {?} */ 93 | IConfigOptions.prototype.unlinkUrl; 94 | /** @type {?} */ 95 | IConfigOptions.prototype.tokenName; 96 | /** @type {?} */ 97 | IConfigOptions.prototype.tokenSeparator; 98 | /** @type {?} */ 99 | IConfigOptions.prototype.tokenPrefix; 100 | /** @type {?} */ 101 | IConfigOptions.prototype.authToken; 102 | /** @type {?} */ 103 | IConfigOptions.prototype.authHeader; 104 | /** @type {?} */ 105 | IConfigOptions.prototype.storageType; 106 | /** @type {?} */ 107 | IConfigOptions.prototype.providers; 108 | /** @type {?} */ 109 | IConfigOptions.prototype.withCredentials; 110 | /** @type {?} */ 111 | IConfigOptions.prototype.resolveToken; 112 | } 113 | /** 114 | * @record 115 | */ 116 | export function IPartialConfigOptions() { } 117 | if (false) { 118 | /** @type {?|undefined} */ 119 | IPartialConfigOptions.prototype.tokenRoot; 120 | /** @type {?|undefined} */ 121 | IPartialConfigOptions.prototype.cordova; 122 | /** @type {?|undefined} */ 123 | IPartialConfigOptions.prototype.baseUrl; 124 | /** @type {?|undefined} */ 125 | IPartialConfigOptions.prototype.loginUrl; 126 | /** @type {?|undefined} */ 127 | IPartialConfigOptions.prototype.signupUrl; 128 | /** @type {?|undefined} */ 129 | IPartialConfigOptions.prototype.unlinkUrl; 130 | /** @type {?|undefined} */ 131 | IPartialConfigOptions.prototype.tokenName; 132 | /** @type {?|undefined} */ 133 | IPartialConfigOptions.prototype.tokenSeparator; 134 | /** @type {?|undefined} */ 135 | IPartialConfigOptions.prototype.tokenPrefix; 136 | /** @type {?|undefined} */ 137 | IPartialConfigOptions.prototype.authToken; 138 | /** @type {?|undefined} */ 139 | IPartialConfigOptions.prototype.authHeader; 140 | /** @type {?|undefined} */ 141 | IPartialConfigOptions.prototype.storageType; 142 | /** @type {?|undefined} */ 143 | IPartialConfigOptions.prototype.providers; 144 | /** @type {?|undefined} */ 145 | IPartialConfigOptions.prototype.withCredentials; 146 | /** @type {?|undefined} */ 147 | IPartialConfigOptions.prototype.resolveToken; 148 | } 149 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWludGVyZmFjZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZzItdWktYXV0aC8iLCJzb3VyY2VzIjpbImxpYi9jb25maWctaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUEsbUNBTUM7OztJQUxDLDhCQUFlOztJQUNmLCtCQUFnQjs7SUFDaEIsNkJBQWM7O0lBQ2QsNEJBQWE7O0lBQ2IsdUNBQXlCOzs7OztBQUczQixvQ0FRQzs7O0lBUEMsNkJBQWE7O0lBQ2IsOEJBQWM7O0lBQ2QscUNBQXFCOztJQUNyQixzQ0FBNkI7O0lBQzdCLCtDQUErQjs7SUFDL0IsbUNBQWtCOztJQUNsQixnQ0FBZ0I7Ozs7O0FBR2xCLG9DQWdCQzs7O0lBZkMsNkJBQWE7O0lBQ2IsOEJBQWM7O0lBQ2QscUNBQXFCOztJQUNyQixzQ0FBNkI7O0lBQzdCLCtDQUErQjs7SUFDL0IsbUNBQWtCOztJQUNsQixnQ0FBZ0I7O0lBQ2hCLHNDQUFzQjs7SUFDdEIsa0NBQWtCOztJQUNsQiw2Q0FFRTs7SUFDRix3Q0FBd0I7O0lBQ3hCLCtCQUFpQjs7SUFDakIsK0JBQWdDOzs7OztBQUdsQyxnQ0FFQzs7OztBQUVELG9DQWdCQzs7O0lBZkMsbUNBQXlCOztJQUN6QixpQ0FBd0I7O0lBQ3hCLGlDQUFnQjs7SUFDaEIsa0NBQWlCOztJQUNqQixtQ0FBa0I7O0lBQ2xCLG1DQUFrQjs7SUFDbEIsbUNBQWtCOztJQUNsQix3Q0FBdUI7O0lBQ3ZCLHFDQUFvQjs7SUFDcEIsbUNBQWtCOztJQUNsQixvQ0FBbUI7O0lBQ25CLHFDQUF5Qjs7SUFDekIsbUNBQXNCOztJQUN0Qix5Q0FBeUI7O0lBQ3pCLHNDQUFnRTs7Ozs7QUFJbEUsMkNBZ0JDOzs7SUFmQywwQ0FBMEI7O0lBQzFCLHdDQUF5Qjs7SUFDekIsd0NBQWlCOztJQUNqQix5Q0FBa0I7O0lBQ2xCLDBDQUFtQjs7SUFDbkIsMENBQW1COztJQUNuQiwwQ0FBbUI7O0lBQ25CLCtDQUF3Qjs7SUFDeEIsNENBQXFCOztJQUNyQiwwQ0FBbUI7O0lBQ25CLDJDQUFvQjs7SUFDcEIsNENBQTBCOztJQUMxQiwwQ0FBdUI7O0lBQ3ZCLGdEQUEwQjs7SUFDMUIsNkNBQWlFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RvcmFnZVR5cGUgfSBmcm9tICcuL3N0b3JhZ2UtdHlwZS5lbnVtJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBvcHVwT3B0aW9ucyB7XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgaGVpZ2h0PzogbnVtYmVyO1xyXG4gIGxlZnQ/OiBudW1iZXI7XHJcbiAgdG9wPzogbnVtYmVyO1xyXG4gIHZpc2libGVUb29sYmFyPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJT2F1dGgxT3B0aW9ucyB7XHJcbiAgdXJsPzogc3RyaW5nO1xyXG4gIG5hbWU/OiBzdHJpbmc7XHJcbiAgcmVkaXJlY3RVcmk/OiBzdHJpbmc7XHJcbiAgcG9wdXBPcHRpb25zPzogSVBvcHVwT3B0aW9ucztcclxuICBhdXRob3JpemF0aW9uRW5kcG9pbnQ/OiBzdHJpbmc7XHJcbiAgb2F1dGhUeXBlPzogJzEuMCc7XHJcbiAgbWV0aG9kPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPYXV0aDJPcHRpb25zIHtcclxuICB1cmw/OiBzdHJpbmc7XHJcbiAgbmFtZT86IHN0cmluZztcclxuICByZWRpcmVjdFVyaT86IHN0cmluZztcclxuICBwb3B1cE9wdGlvbnM/OiBJUG9wdXBPcHRpb25zO1xyXG4gIGF1dGhvcml6YXRpb25FbmRwb2ludD86IHN0cmluZztcclxuICBvYXV0aFR5cGU/OiAnMi4wJztcclxuICBtZXRob2Q/OiBzdHJpbmc7XHJcbiAgcmVzcG9uc2VUeXBlPzogc3RyaW5nO1xyXG4gIGNsaWVudElkPzogc3RyaW5nO1xyXG4gIGFkZGl0aW9uYWxVcmxQYXJhbXM/OiB7XHJcbiAgICBbcGFyYW1OYW1lOiBzdHJpbmddOiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKSB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgfTtcclxuICBzY29wZURlbGltaXRlcj86IHN0cmluZztcclxuICBzY29wZT86IHN0cmluZ1tdO1xyXG4gIHN0YXRlPzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVByb3ZpZGVycyB7XHJcbiAgW3Byb3ZpZGVyOiBzdHJpbmddOiBJT2F1dGgyT3B0aW9ucyB8IElPYXV0aDFPcHRpb25zO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWdPcHRpb25zIHtcclxuICB0b2tlblJvb3Q6IHN0cmluZyB8IG51bGw7XHJcbiAgY29yZG92YTogYm9vbGVhbiB8IG51bGw7XHJcbiAgYmFzZVVybDogc3RyaW5nO1xyXG4gIGxvZ2luVXJsOiBzdHJpbmc7XHJcbiAgc2lnbnVwVXJsOiBzdHJpbmc7XHJcbiAgdW5saW5rVXJsOiBzdHJpbmc7XHJcbiAgdG9rZW5OYW1lOiBzdHJpbmc7XHJcbiAgdG9rZW5TZXBhcmF0b3I6IHN0cmluZztcclxuICB0b2tlblByZWZpeDogc3RyaW5nO1xyXG4gIGF1dGhUb2tlbjogc3RyaW5nO1xyXG4gIGF1dGhIZWFkZXI6IHN0cmluZztcclxuICBzdG9yYWdlVHlwZTogU3RvcmFnZVR5cGU7XHJcbiAgcHJvdmlkZXJzOiBJUHJvdmlkZXJzO1xyXG4gIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbjtcclxuICByZXNvbHZlVG9rZW46IChyZXNwb25zZTogYW55LCBjb25maWc6IElDb25maWdPcHRpb25zKSA9PiBzdHJpbmc7XHJcbn1cclxuXHJcbi8vIG5vdyBldmVuIHVzaW5nIHRzIDIuNy4yIFBhcnRpYWw8SUNvbmZpZ09wdGlvbnM+IGNhdXNlcyBcIkNvdWxkIG5vdCByZXNvbHZlIHR5cGUgUGFydGlhbFwiIGJ1aWxkIGVycm9yLi4uXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhcnRpYWxDb25maWdPcHRpb25zIHtcclxuICB0b2tlblJvb3Q/OiBzdHJpbmcgfCBudWxsO1xyXG4gIGNvcmRvdmE/OiBib29sZWFuIHwgbnVsbDtcclxuICBiYXNlVXJsPzogc3RyaW5nO1xyXG4gIGxvZ2luVXJsPzogc3RyaW5nO1xyXG4gIHNpZ251cFVybD86IHN0cmluZztcclxuICB1bmxpbmtVcmw/OiBzdHJpbmc7XHJcbiAgdG9rZW5OYW1lPzogc3RyaW5nO1xyXG4gIHRva2VuU2VwYXJhdG9yPzogc3RyaW5nO1xyXG4gIHRva2VuUHJlZml4Pzogc3RyaW5nO1xyXG4gIGF1dGhUb2tlbj86IHN0cmluZztcclxuICBhdXRoSGVhZGVyPzogc3RyaW5nO1xyXG4gIHN0b3JhZ2VUeXBlPzogU3RvcmFnZVR5cGU7XHJcbiAgcHJvdmlkZXJzPzogSVByb3ZpZGVycztcclxuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xyXG4gIHJlc29sdmVUb2tlbj86IChyZXNwb25zZTogYW55LCBjb25maWc6IElDb25maWdPcHRpb25zKSA9PiBzdHJpbmc7XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm2015/lib/interceptor.service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | import { Injectable } from '@angular/core'; 6 | import { SharedService } from './shared.service'; 7 | import { ConfigService } from './config.service'; 8 | export class JwtInterceptor { 9 | /** 10 | * @param {?} shared 11 | * @param {?} config 12 | */ 13 | constructor(shared, config) { 14 | this.shared = shared; 15 | this.config = config; 16 | } 17 | /** 18 | * @param {?} req 19 | * @param {?} next 20 | * @return {?} 21 | */ 22 | intercept(req, next) { 23 | const { authHeader, authToken } = this.config.options; 24 | /** @type {?} */ 25 | const token = this.shared.getToken(); 26 | /** @type {?} */ 27 | const isAuthenticated = this.shared.isAuthenticated(); 28 | /** @type {?} */ 29 | const newReq = isAuthenticated && !req.headers.has(authHeader) ? req.clone({ setHeaders: { [authHeader]: `${authToken} ${token}` } }) : req; 30 | return next.handle(newReq); 31 | } 32 | } 33 | JwtInterceptor.decorators = [ 34 | { type: Injectable } 35 | ]; 36 | /** @nocollapse */ 37 | JwtInterceptor.ctorParameters = () => [ 38 | { type: SharedService }, 39 | { type: ConfigService } 40 | ]; 41 | if (false) { 42 | /** 43 | * @type {?} 44 | * @private 45 | */ 46 | JwtInterceptor.prototype.shared; 47 | /** 48 | * @type {?} 49 | * @private 50 | */ 51 | JwtInterceptor.prototype.config; 52 | } 53 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi11aS1hdXRoLyIsInNvdXJjZXMiOlsibGliL2ludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUlqRCxNQUFNLE9BQU8sY0FBYzs7Ozs7SUFDekIsWUFBb0IsTUFBcUIsRUFBVSxNQUFxQjtRQUFwRCxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtJQUFHLENBQUM7Ozs7OztJQUU1RSxTQUFTLENBQUMsR0FBcUIsRUFBRSxJQUFpQjtjQUMxQyxFQUFFLFVBQVUsRUFBRSxTQUFTLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87O2NBQy9DLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTs7Y0FDOUIsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFOztjQUMvQyxNQUFNLEdBQ1YsZUFBZSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLEVBQUUsRUFBRSxDQUFDLFVBQVUsQ0FBQyxFQUFFLEdBQUcsU0FBUyxJQUFJLEtBQUssRUFBRSxFQUFFLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxHQUFHO1FBQzlILE9BQU8sSUFBSSxDQUFDLE1BQU0sQ0FBQyxNQUFNLENBQUMsQ0FBQztJQUM3QixDQUFDOzs7WUFYRixVQUFVOzs7O1lBSkYsYUFBYTtZQUNiLGFBQWE7Ozs7Ozs7SUFLUixnQ0FBNkI7Ozs7O0lBQUUsZ0NBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwSW50ZXJjZXB0b3IsIEh0dHBSZXF1ZXN0LCBIdHRwSGFuZGxlciwgSHR0cEV2ZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgSnd0SW50ZXJjZXB0b3IgaW1wbGVtZW50cyBIdHRwSW50ZXJjZXB0b3Ige1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgc2hhcmVkOiBTaGFyZWRTZXJ2aWNlLCBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZSkge31cclxuXHJcbiAgaW50ZXJjZXB0KHJlcTogSHR0cFJlcXVlc3Q8YW55PiwgbmV4dDogSHR0cEhhbmRsZXIpOiBPYnNlcnZhYmxlPEh0dHBFdmVudDxhbnk+PiB7XHJcbiAgICBjb25zdCB7IGF1dGhIZWFkZXIsIGF1dGhUb2tlbiB9ID0gdGhpcy5jb25maWcub3B0aW9ucztcclxuICAgIGNvbnN0IHRva2VuID0gdGhpcy5zaGFyZWQuZ2V0VG9rZW4oKTtcclxuICAgIGNvbnN0IGlzQXV0aGVudGljYXRlZCA9IHRoaXMuc2hhcmVkLmlzQXV0aGVudGljYXRlZCgpO1xyXG4gICAgY29uc3QgbmV3UmVxID1cclxuICAgICAgaXNBdXRoZW50aWNhdGVkICYmICFyZXEuaGVhZGVycy5oYXMoYXV0aEhlYWRlcikgPyByZXEuY2xvbmUoeyBzZXRIZWFkZXJzOiB7IFthdXRoSGVhZGVyXTogYCR7YXV0aFRva2VufSAke3Rva2VufWAgfSB9KSA6IHJlcTtcclxuICAgIHJldHVybiBuZXh0LmhhbmRsZShuZXdSZXEpO1xyXG4gIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm2015/lib/local.service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | import { Injectable } from '@angular/core'; 6 | import { HttpClient } from '@angular/common/http'; 7 | import { SharedService } from './shared.service'; 8 | import { ConfigService } from './config.service'; 9 | import { joinUrl } from './utils'; 10 | import { tap } from 'rxjs/operators'; 11 | export class LocalService { 12 | /** 13 | * @param {?} http 14 | * @param {?} shared 15 | * @param {?} config 16 | */ 17 | constructor(http, shared, config) { 18 | this.http = http; 19 | this.shared = shared; 20 | this.config = config; 21 | } 22 | /** 23 | * @template T 24 | * @param {?} user 25 | * @param {?=} url 26 | * @return {?} 27 | */ 28 | login(user, url) { 29 | return this.http 30 | .post(url || joinUrl(this.config.options.baseUrl, this.config.options.loginUrl), user) 31 | .pipe(tap((/** 32 | * @param {?} data 33 | * @return {?} 34 | */ 35 | data => this.shared.setToken(data)))); 36 | } 37 | /** 38 | * @template T 39 | * @param {?} user 40 | * @param {?=} url 41 | * @return {?} 42 | */ 43 | signup(user, url) { 44 | return this.http.post(url || joinUrl(this.config.options.baseUrl, this.config.options.signupUrl), user); 45 | } 46 | } 47 | LocalService.decorators = [ 48 | { type: Injectable } 49 | ]; 50 | /** @nocollapse */ 51 | LocalService.ctorParameters = () => [ 52 | { type: HttpClient }, 53 | { type: SharedService }, 54 | { type: ConfigService } 55 | ]; 56 | if (false) { 57 | /** 58 | * @type {?} 59 | * @private 60 | */ 61 | LocalService.prototype.http; 62 | /** 63 | * @type {?} 64 | * @private 65 | */ 66 | LocalService.prototype.shared; 67 | /** 68 | * @type {?} 69 | * @private 70 | */ 71 | LocalService.prototype.config; 72 | } 73 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi11aS1hdXRoLyIsInNvdXJjZXMiOlsibGliL2xvY2FsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFJckMsTUFBTSxPQUFPLFlBQVk7Ozs7OztJQUN2QixZQUFvQixJQUFnQixFQUFVLE1BQXFCLEVBQVUsTUFBcUI7UUFBOUUsU0FBSSxHQUFKLElBQUksQ0FBWTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFlO0lBQUcsQ0FBQzs7Ozs7OztJQUUvRixLQUFLLENBQTRCLElBQXFCLEVBQUUsR0FBWTtRQUN6RSxPQUFPLElBQUksQ0FBQyxJQUFJO2FBQ2IsSUFBSSxDQUFJLEdBQUcsSUFBSSxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFFBQVEsQ0FBQyxFQUFFLElBQUksQ0FBQzthQUN4RixJQUFJLENBQUMsR0FBRzs7OztRQUFDLElBQUksQ0FBQyxFQUFFLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxRQUFRLENBQUMsSUFBSSxDQUFDLEVBQUMsQ0FBQyxDQUFDO0lBQ25ELENBQUM7Ozs7Ozs7SUFFTSxNQUFNLENBQVUsSUFBcUIsRUFBRSxHQUFZO1FBQ3hELE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxJQUFJLENBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsSUFBSSxDQUFDLENBQUM7SUFDN0csQ0FBQzs7O1lBWkYsVUFBVTs7OztZQVBGLFVBQVU7WUFDVixhQUFhO1lBQ2IsYUFBYTs7Ozs7OztJQU9SLDRCQUF3Qjs7Ozs7SUFBRSw4QkFBNkI7Ozs7O0lBQUUsOEJBQTZCIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSW5qZWN0YWJsZSB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi9zaGFyZWQuc2VydmljZSc7XHJcbmltcG9ydCB7IENvbmZpZ1NlcnZpY2UgfSBmcm9tICcuL2NvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgam9pblVybCB9IGZyb20gJy4vdXRpbHMnO1xyXG5pbXBvcnQgeyB0YXAgfSBmcm9tICdyeGpzL29wZXJhdG9ycyc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIExvY2FsU2VydmljZSB7XHJcbiAgY29uc3RydWN0b3IocHJpdmF0ZSBodHRwOiBIdHRwQ2xpZW50LCBwcml2YXRlIHNoYXJlZDogU2hhcmVkU2VydmljZSwgcHJpdmF0ZSBjb25maWc6IENvbmZpZ1NlcnZpY2UpIHt9XHJcblxyXG4gIHB1YmxpYyBsb2dpbjxUIGV4dGVuZHMgc3RyaW5nIHwgb2JqZWN0Pih1c2VyOiBzdHJpbmcgfCBvYmplY3QsIHVybD86IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cFxyXG4gICAgICAucG9zdDxUPih1cmwgfHwgam9pblVybCh0aGlzLmNvbmZpZy5vcHRpb25zLmJhc2VVcmwsIHRoaXMuY29uZmlnLm9wdGlvbnMubG9naW5VcmwpLCB1c2VyKVxyXG4gICAgICAucGlwZSh0YXAoZGF0YSA9PiB0aGlzLnNoYXJlZC5zZXRUb2tlbihkYXRhKSkpO1xyXG4gIH1cclxuXHJcbiAgcHVibGljIHNpZ251cDxUID0gYW55Pih1c2VyOiBzdHJpbmcgfCBvYmplY3QsIHVybD86IHN0cmluZyk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgcmV0dXJuIHRoaXMuaHR0cC5wb3N0PFQ+KHVybCB8fCBqb2luVXJsKHRoaXMuY29uZmlnLm9wdGlvbnMuYmFzZVVybCwgdGhpcy5jb25maWcub3B0aW9ucy5zaWdudXBVcmwpLCB1c2VyKTtcclxuICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm2015/lib/ng2-ui-auth.module.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | import { NgModule } from '@angular/core'; 6 | import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; 7 | import { CONFIG_OPTIONS, ConfigService } from './config.service'; 8 | import { StorageService } from './storage-service'; 9 | import { BrowserStorageService } from './browser-storage.service'; 10 | import { SharedService } from './shared.service'; 11 | import { JwtInterceptor } from './interceptor.service'; 12 | import { OauthService } from './oauth.service'; 13 | import { HttpClient } from '@angular/common/http'; 14 | import { PopupService } from './popup.service'; 15 | import { LocalService } from './local.service'; 16 | import { AuthService } from './auth.service'; 17 | export class Ng2UiAuthModule { 18 | /** 19 | * @param {?=} configOptions 20 | * @param {?=} defaultJwtInterceptor 21 | * @return {?} 22 | */ 23 | static forRoot(configOptions, defaultJwtInterceptor = true) { 24 | return { 25 | ngModule: Ng2UiAuthModule, 26 | providers: [ 27 | ...(configOptions ? [{ provide: CONFIG_OPTIONS, useValue: configOptions }] : []), 28 | { provide: ConfigService, useClass: ConfigService, deps: [CONFIG_OPTIONS] }, 29 | { provide: StorageService, useClass: BrowserStorageService, deps: [ConfigService] }, 30 | { provide: SharedService, useClass: SharedService, deps: [StorageService, ConfigService] }, 31 | { provide: LocalService, useClass: LocalService, deps: [HttpClient, SharedService, ConfigService] }, 32 | { provide: PopupService, useClass: PopupService, deps: [ConfigService] }, 33 | { provide: OauthService, useClass: OauthService, deps: [HttpClient, SharedService, ConfigService, PopupService] }, 34 | { provide: AuthService, useClass: AuthService, deps: [SharedService, LocalService, OauthService] }, 35 | ...(defaultJwtInterceptor 36 | ? [{ provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true, deps: [SharedService, ConfigService] }] 37 | : []) 38 | ] 39 | }; 40 | } 41 | } 42 | Ng2UiAuthModule.decorators = [ 43 | { type: NgModule, args: [{ 44 | imports: [HttpClientModule], 45 | declarations: [], 46 | exports: [] 47 | },] } 48 | ]; 49 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLXVpLWF1dGgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmcyLXVpLWF1dGgvIiwic291cmNlcyI6WyJsaWIvbmcyLXVpLWF1dGgubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7QUFBQSxPQUFPLEVBQUUsUUFBUSxFQUF1QixNQUFNLGVBQWUsQ0FBQztBQUM5RCxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsaUJBQWlCLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUUzRSxPQUFPLEVBQUUsY0FBYyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pFLE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSxtQkFBbUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwyQkFBMkIsQ0FBQztBQUNsRSxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGNBQWMsRUFBRSxNQUFNLHVCQUF1QixDQUFDO0FBQ3ZELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsVUFBVSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDbEQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFPN0MsTUFBTSxPQUFPLGVBQWU7Ozs7OztJQUMxQixNQUFNLENBQUMsT0FBTyxDQUFDLGFBQXFDLEVBQUUscUJBQXFCLEdBQUcsSUFBSTtRQUNoRixPQUFPO1lBQ0wsUUFBUSxFQUFFLGVBQWU7WUFDekIsU0FBUyxFQUFFO2dCQUNULEdBQUcsQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hGLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFO2dCQUMzRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNuRixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLEVBQUU7Z0JBQzFGLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLEVBQUU7Z0JBQ25HLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUN4RSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsRUFBRTtnQkFDakgsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsRUFBRTtnQkFDbEcsR0FBRyxDQUFDLHFCQUFxQjtvQkFDdkIsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDO29CQUMvRyxDQUFDLENBQUMsRUFBRSxDQUFDO2FBQ1I7U0FDRixDQUFDO0lBQ0osQ0FBQzs7O1lBdkJGLFFBQVEsU0FBQztnQkFDUixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztnQkFDM0IsWUFBWSxFQUFFLEVBQUU7Z0JBQ2hCLE9BQU8sRUFBRSxFQUFFO2FBQ1oiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlLCBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSUNvbmZpZ09wdGlvbnMsIElQYXJ0aWFsQ29uZmlnT3B0aW9ucyB9IGZyb20gJy4vY29uZmlnLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDT05GSUdfT1BUSU9OUywgQ29uZmlnU2VydmljZSB9IGZyb20gJy4vY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgQnJvd3NlclN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9icm93c2VyLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSnd0SW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyY2VwdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYXV0aFNlcnZpY2UgfSBmcm9tICcuL29hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBQb3B1cFNlcnZpY2UgfSBmcm9tICcuL3BvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2NhbFNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW0h0dHBDbGllbnRNb2R1bGVdLFxyXG4gIGRlY2xhcmF0aW9uczogW10sXHJcbiAgZXhwb3J0czogW11cclxufSlcclxuZXhwb3J0IGNsYXNzIE5nMlVpQXV0aE1vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnT3B0aW9ucz86IElQYXJ0aWFsQ29uZmlnT3B0aW9ucywgZGVmYXVsdEp3dEludGVyY2VwdG9yID0gdHJ1ZSk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IE5nMlVpQXV0aE1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgLi4uKGNvbmZpZ09wdGlvbnMgPyBbeyBwcm92aWRlOiBDT05GSUdfT1BUSU9OUywgdXNlVmFsdWU6IGNvbmZpZ09wdGlvbnMgfV0gOiBbXSksXHJcbiAgICAgICAgeyBwcm92aWRlOiBDb25maWdTZXJ2aWNlLCB1c2VDbGFzczogQ29uZmlnU2VydmljZSwgZGVwczogW0NPTkZJR19PUFRJT05TXSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogU3RvcmFnZVNlcnZpY2UsIHVzZUNsYXNzOiBCcm93c2VyU3RvcmFnZVNlcnZpY2UsIGRlcHM6IFtDb25maWdTZXJ2aWNlXSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogU2hhcmVkU2VydmljZSwgdXNlQ2xhc3M6IFNoYXJlZFNlcnZpY2UsIGRlcHM6IFtTdG9yYWdlU2VydmljZSwgQ29uZmlnU2VydmljZV0gfSxcclxuICAgICAgICB7IHByb3ZpZGU6IExvY2FsU2VydmljZSwgdXNlQ2xhc3M6IExvY2FsU2VydmljZSwgZGVwczogW0h0dHBDbGllbnQsIFNoYXJlZFNlcnZpY2UsIENvbmZpZ1NlcnZpY2VdIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBQb3B1cFNlcnZpY2UsIHVzZUNsYXNzOiBQb3B1cFNlcnZpY2UsIGRlcHM6IFtDb25maWdTZXJ2aWNlXSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogT2F1dGhTZXJ2aWNlLCB1c2VDbGFzczogT2F1dGhTZXJ2aWNlLCBkZXBzOiBbSHR0cENsaWVudCwgU2hhcmVkU2VydmljZSwgQ29uZmlnU2VydmljZSwgUG9wdXBTZXJ2aWNlXSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogQXV0aFNlcnZpY2UsIHVzZUNsYXNzOiBBdXRoU2VydmljZSwgZGVwczogW1NoYXJlZFNlcnZpY2UsIExvY2FsU2VydmljZSwgT2F1dGhTZXJ2aWNlXSB9LFxyXG4gICAgICAgIC4uLihkZWZhdWx0Snd0SW50ZXJjZXB0b3JcclxuICAgICAgICAgID8gW3sgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBKd3RJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUsIGRlcHM6IFtTaGFyZWRTZXJ2aWNlLCBDb25maWdTZXJ2aWNlXSB9XVxyXG4gICAgICAgICAgOiBbXSlcclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm2015/lib/oauth-service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | /** 6 | * @record 7 | */ 8 | export function IOauthService() { } 9 | if (false) { 10 | /** 11 | * @template T 12 | * @param {?} options 13 | * @param {?} userData 14 | * @return {?} 15 | */ 16 | IOauthService.prototype.open = function (options, userData) { }; 17 | } 18 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi11aS1hdXRoLyIsInNvdXJjZXMiOlsibGliL29hdXRoLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLG1DQUVDOzs7Ozs7OztJQURDLGdFQUEyRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElPYXV0aDJPcHRpb25zLCBJT2F1dGgxT3B0aW9ucyB9IGZyb20gJy4vY29uZmlnLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPYXV0aFNlcnZpY2Uge1xyXG4gIG9wZW48VCBleHRlbmRzIG9iamVjdCB8IHN0cmluZz4ob3B0aW9uczogSU9hdXRoMk9wdGlvbnMgfCBJT2F1dGgxT3B0aW9ucywgdXNlckRhdGE6IG9iamVjdCk6IE9ic2VydmFibGU8VD47XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm2015/lib/oauth.service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | import { Injectable, Injector } from '@angular/core'; 6 | import { joinUrl } from './utils'; 7 | import { tap } from 'rxjs/operators'; 8 | import { Oauth1Service } from './oauth1.service'; 9 | import { Oauth2Service } from './oauth2.service'; 10 | import { PopupService } from './popup.service'; 11 | import { ConfigService } from './config.service'; 12 | import { SharedService } from './shared.service'; 13 | import { HttpClient } from '@angular/common/http'; 14 | export class OauthService { 15 | /** 16 | * @param {?} http 17 | * @param {?} shared 18 | * @param {?} config 19 | * @param {?} popup 20 | */ 21 | constructor(http, shared, config, popup) { 22 | this.http = http; 23 | this.shared = shared; 24 | this.config = config; 25 | this.popup = popup; 26 | this.depProviders = [ 27 | { provide: HttpClient, useValue: this.http }, 28 | { provide: PopupService, useValue: this.popup }, 29 | { provide: ConfigService, useValue: this.config } 30 | ]; 31 | this.deps = [HttpClient, PopupService, ConfigService]; 32 | } 33 | /** 34 | * @template T 35 | * @param {?} name 36 | * @param {?=} userData 37 | * @return {?} 38 | */ 39 | authenticate(name, userData) { 40 | /** @type {?} */ 41 | const provider = this.config.options.providers[name].oauthType === '1.0' 42 | ? Injector.create([...this.depProviders, { provide: Oauth1Service, deps: this.deps }]).get(Oauth1Service) 43 | : Injector.create([...this.depProviders, { provide: Oauth2Service, deps: this.deps }]).get(Oauth2Service); 44 | return provider.open(this.config.options.providers[name], userData || {}).pipe(tap((/** 45 | * @param {?} response 46 | * @return {?} 47 | */ 48 | response => { 49 | // this is for a scenario when someone wishes to opt out from 50 | // satellizer's magic by doing authorization code exchange and 51 | // saving a token manually. 52 | if (this.config.options.providers[name].url) { 53 | this.shared.setToken(response); 54 | } 55 | }))); 56 | } 57 | /** 58 | * @template T 59 | * @param {?} provider 60 | * @param {?=} url 61 | * @param {?=} method 62 | * @return {?} 63 | */ 64 | unlink(provider, url = joinUrl(this.config.options.baseUrl, this.config.options.unlinkUrl), method = 'POST') { 65 | return this.http.request(method, url, { body: { provider } }); 66 | } 67 | } 68 | OauthService.decorators = [ 69 | { type: Injectable } 70 | ]; 71 | /** @nocollapse */ 72 | OauthService.ctorParameters = () => [ 73 | { type: HttpClient }, 74 | { type: SharedService }, 75 | { type: ConfigService }, 76 | { type: PopupService } 77 | ]; 78 | if (false) { 79 | /** @type {?} */ 80 | OauthService.prototype.depProviders; 81 | /** @type {?} */ 82 | OauthService.prototype.deps; 83 | /** 84 | * @type {?} 85 | * @private 86 | */ 87 | OauthService.prototype.http; 88 | /** 89 | * @type {?} 90 | * @private 91 | */ 92 | OauthService.prototype.shared; 93 | /** 94 | * @type {?} 95 | * @private 96 | */ 97 | OauthService.prototype.config; 98 | /** 99 | * @type {?} 100 | * @private 101 | */ 102 | OauthService.prototype.popup; 103 | } 104 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi11aS1hdXRoLyIsInNvdXJjZXMiOlsibGliL29hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLE1BQU0sZUFBZSxDQUFDO0FBQ3JELE9BQU8sRUFBRSxPQUFPLEVBQUUsTUFBTSxTQUFTLENBQUM7QUFDbEMsT0FBTyxFQUFFLEdBQUcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBQ3JDLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFFakQsT0FBTyxFQUFFLFlBQVksRUFBRSxNQUFNLGlCQUFpQixDQUFDO0FBQy9DLE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBSWxELE1BQU0sT0FBTyxZQUFZOzs7Ozs7O0lBUXZCLFlBQW9CLElBQWdCLEVBQVUsTUFBcUIsRUFBVSxNQUFxQixFQUFVLEtBQW1CO1FBQTNHLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFVLFVBQUssR0FBTCxLQUFLLENBQWM7UUFQdEgsaUJBQVksR0FBRztZQUN0QixFQUFFLE9BQU8sRUFBRSxVQUFVLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUU7WUFDNUMsRUFBRSxPQUFPLEVBQUUsWUFBWSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsS0FBSyxFQUFFO1lBQy9DLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLE1BQU0sRUFBRTtTQUNsRCxDQUFDO1FBQ08sU0FBSSxHQUFHLENBQUMsVUFBVSxFQUFFLFlBQVksRUFBRSxhQUFhLENBQUMsQ0FBQztJQUV3RSxDQUFDOzs7Ozs7O0lBRTVILFlBQVksQ0FBNEIsSUFBWSxFQUFFLFFBQWM7O2NBQ25FLFFBQVEsR0FDWixJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsU0FBUyxLQUFLLEtBQUs7WUFDckQsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7WUFDekcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxNQUFNLENBQUMsQ0FBQyxHQUFHLElBQUksQ0FBQyxZQUFZLEVBQUUsRUFBRSxPQUFPLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7UUFFN0csT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUMvRSxHQUFHOzs7O1FBQUMsUUFBUSxDQUFDLEVBQUU7WUFDYiw2REFBNkQ7WUFDN0QsOERBQThEO1lBQzlELDJCQUEyQjtZQUMzQixJQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxHQUFHLEVBQUU7Z0JBQzNDLElBQUksQ0FBQyxNQUFNLENBQUMsUUFBUSxDQUFDLFFBQVEsQ0FBQyxDQUFDO2FBQ2hDO1FBQ0gsQ0FBQyxFQUFDLENBQ0gsQ0FBQztJQUNKLENBQUM7Ozs7Ozs7O0lBRU0sTUFBTSxDQUFJLFFBQWdCLEVBQUUsR0FBRyxHQUFHLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLEVBQUUsTUFBTSxHQUFHLE1BQU07UUFDM0gsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLE9BQU8sQ0FBSSxNQUFNLEVBQUUsR0FBRyxFQUFFLEVBQUUsSUFBSSxFQUFFLEVBQUUsUUFBUSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7OztZQS9CRixVQUFVOzs7O1lBSEYsVUFBVTtZQURWLGFBQWE7WUFEYixhQUFhO1lBRGIsWUFBWTs7OztJQVFuQixvQ0FJRTs7SUFDRiw0QkFBMEQ7Ozs7O0lBRTlDLDRCQUF3Qjs7Ozs7SUFBRSw4QkFBNkI7Ozs7O0lBQUUsOEJBQTZCOzs7OztJQUFFLDZCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGpvaW5VcmwgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYXV0aDFTZXJ2aWNlIH0gZnJvbSAnLi9vYXV0aDEuc2VydmljZSc7XHJcbmltcG9ydCB7IE9hdXRoMlNlcnZpY2UgfSBmcm9tICcuL29hdXRoMi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQb3B1cFNlcnZpY2UgfSBmcm9tICcuL3BvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSU9hdXRoU2VydmljZSB9IGZyb20gJy4vb2F1dGgtc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBPYXV0aFNlcnZpY2Uge1xyXG4gIHJlYWRvbmx5IGRlcFByb3ZpZGVycyA9IFtcclxuICAgIHsgcHJvdmlkZTogSHR0cENsaWVudCwgdXNlVmFsdWU6IHRoaXMuaHR0cCB9LFxyXG4gICAgeyBwcm92aWRlOiBQb3B1cFNlcnZpY2UsIHVzZVZhbHVlOiB0aGlzLnBvcHVwIH0sXHJcbiAgICB7IHByb3ZpZGU6IENvbmZpZ1NlcnZpY2UsIHVzZVZhbHVlOiB0aGlzLmNvbmZpZyB9XHJcbiAgXTtcclxuICByZWFkb25seSBkZXBzID0gW0h0dHBDbGllbnQsIFBvcHVwU2VydmljZSwgQ29uZmlnU2VydmljZV07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBzaGFyZWQ6IFNoYXJlZFNlcnZpY2UsIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLCBwcml2YXRlIHBvcHVwOiBQb3B1cFNlcnZpY2UpIHt9XHJcblxyXG4gIHB1YmxpYyBhdXRoZW50aWNhdGU8VCBleHRlbmRzIG9iamVjdCB8IHN0cmluZz4obmFtZTogc3RyaW5nLCB1c2VyRGF0YT86IGFueSk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgY29uc3QgcHJvdmlkZXI6IElPYXV0aFNlcnZpY2UgPVxyXG4gICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLnByb3ZpZGVyc1tuYW1lXS5vYXV0aFR5cGUgPT09ICcxLjAnXHJcbiAgICAgICAgPyBJbmplY3Rvci5jcmVhdGUoWy4uLnRoaXMuZGVwUHJvdmlkZXJzLCB7IHByb3ZpZGU6IE9hdXRoMVNlcnZpY2UsIGRlcHM6IHRoaXMuZGVwcyB9XSkuZ2V0KE9hdXRoMVNlcnZpY2UpXHJcbiAgICAgICAgOiBJbmplY3Rvci5jcmVhdGUoWy4uLnRoaXMuZGVwUHJvdmlkZXJzLCB7IHByb3ZpZGU6IE9hdXRoMlNlcnZpY2UsIGRlcHM6IHRoaXMuZGVwcyB9XSkuZ2V0KE9hdXRoMlNlcnZpY2UpO1xyXG5cclxuICAgIHJldHVybiBwcm92aWRlci5vcGVuPFQ+KHRoaXMuY29uZmlnLm9wdGlvbnMucHJvdmlkZXJzW25hbWVdLCB1c2VyRGF0YSB8fCB7fSkucGlwZShcclxuICAgICAgdGFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAvLyB0aGlzIGlzIGZvciBhIHNjZW5hcmlvIHdoZW4gc29tZW9uZSB3aXNoZXMgdG8gb3B0IG91dCBmcm9tXHJcbiAgICAgICAgLy8gc2F0ZWxsaXplcidzIG1hZ2ljIGJ5IGRvaW5nIGF1dGhvcml6YXRpb24gY29kZSBleGNoYW5nZSBhbmRcclxuICAgICAgICAvLyBzYXZpbmcgYSB0b2tlbiBtYW51YWxseS5cclxuICAgICAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5wcm92aWRlcnNbbmFtZV0udXJsKSB7XHJcbiAgICAgICAgICB0aGlzLnNoYXJlZC5zZXRUb2tlbihyZXNwb25zZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1bmxpbms8VD4ocHJvdmlkZXI6IHN0cmluZywgdXJsID0gam9pblVybCh0aGlzLmNvbmZpZy5vcHRpb25zLmJhc2VVcmwsIHRoaXMuY29uZmlnLm9wdGlvbnMudW5saW5rVXJsKSwgbWV0aG9kID0gJ1BPU1QnKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3Q8VD4obWV0aG9kLCB1cmwsIHsgYm9keTogeyBwcm92aWRlciB9IH0pO1xyXG4gIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm2015/lib/oauth1.service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | import { HttpClient } from '@angular/common/http'; 6 | import { Injectable } from '@angular/core'; 7 | import { map, switchMap, tap } from 'rxjs/operators'; 8 | import { ConfigService } from './config.service'; 9 | import { PopupService } from './popup.service'; 10 | import { buildQueryString, joinUrl } from './utils'; 11 | export class Oauth1Service { 12 | /** 13 | * @param {?} http 14 | * @param {?} popup 15 | * @param {?} config 16 | */ 17 | constructor(http, popup, config) { 18 | this.http = http; 19 | this.popup = popup; 20 | this.config = config; 21 | } 22 | /** 23 | * @template T 24 | * @param {?} oauthOptions 25 | * @param {?} userData 26 | * @return {?} 27 | */ 28 | open(oauthOptions, userData) { 29 | /** @type {?} */ 30 | const serverUrl = this.config.options.baseUrl ? joinUrl(this.config.options.baseUrl, oauthOptions.url) : oauthOptions.url; 31 | return this.popup.open('about:blank', oauthOptions, this.config.options.cordova).pipe(switchMap((/** 32 | * @param {?} popupWindow 33 | * @return {?} 34 | */ 35 | popupWindow => this.http.post(serverUrl, oauthOptions).pipe(tap((/** 36 | * @param {?} authorizationData 37 | * @return {?} 38 | */ 39 | authorizationData => popupWindow 40 | ? popupWindow.location.replace([oauthOptions.authorizationEndpoint, buildQueryString(authorizationData)].join('?')) 41 | : undefined)), switchMap((/** 42 | * @param {?} authorizationData 43 | * @return {?} 44 | */ 45 | authorizationData => this.popup 46 | .waitForClose(popupWindow, this.config.options.cordova, oauthOptions.redirectUri) 47 | .pipe(map((/** 48 | * @param {?} oauthData 49 | * @return {?} 50 | */ 51 | oauthData => ({ authorizationData, oauthData }))))))))), switchMap((/** 52 | * @param {?} __0 53 | * @return {?} 54 | */ 55 | ({ authorizationData, oauthData }) => this.exchangeForToken(oauthOptions, authorizationData, oauthData, userData)))); 56 | } 57 | /** 58 | * @private 59 | * @template T 60 | * @param {?} oauthOptions 61 | * @param {?} authorizationData 62 | * @param {?} oauthData 63 | * @param {?} userData 64 | * @return {?} 65 | */ 66 | exchangeForToken(oauthOptions, authorizationData, oauthData, userData) { 67 | /** @type {?} */ 68 | const body = { oauthOptions, authorizationData, oauthData, userData }; 69 | const { withCredentials, baseUrl } = this.config.options; 70 | const { method = 'POST', url } = oauthOptions; 71 | /** @type {?} */ 72 | const exchangeForTokenUrl = baseUrl ? joinUrl(baseUrl, url) : url; 73 | return this.http.request(method, exchangeForTokenUrl, { body, withCredentials }); 74 | } 75 | } 76 | Oauth1Service.decorators = [ 77 | { type: Injectable } 78 | ]; 79 | /** @nocollapse */ 80 | Oauth1Service.ctorParameters = () => [ 81 | { type: HttpClient }, 82 | { type: PopupService }, 83 | { type: ConfigService } 84 | ]; 85 | if (false) { 86 | /** 87 | * @type {?} 88 | * @private 89 | */ 90 | Oauth1Service.prototype.http; 91 | /** 92 | * @type {?} 93 | * @private 94 | */ 95 | Oauth1Service.prototype.popup; 96 | /** 97 | * @type {?} 98 | * @private 99 | */ 100 | Oauth1Service.prototype.config; 101 | } 102 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgxLnNlcnZpY2UuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZzItdWktYXV0aC8iLCJzb3VyY2VzIjpbImxpYi9vYXV0aDEuc2VydmljZS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLEdBQUcsRUFBRSxTQUFTLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFFckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsZ0JBQWdCLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBR3BELE1BQU0sT0FBTyxhQUFhOzs7Ozs7SUFDeEIsWUFBb0IsSUFBZ0IsRUFBVSxLQUFtQixFQUFVLE1BQXFCO1FBQTVFLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtJQUFHLENBQUM7Ozs7Ozs7SUFFcEcsSUFBSSxDQUFrQyxZQUE0QixFQUFFLFFBQWdCOztjQUM1RSxTQUFTLEdBQUcsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxDQUFDLENBQUMsQ0FBQyxPQUFPLENBQUMsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsT0FBTyxFQUFFLFlBQVksQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsWUFBWSxDQUFDLEdBQUc7UUFDekgsT0FBTyxJQUFJLENBQUMsS0FBSyxDQUFDLElBQUksQ0FBQyxhQUFhLEVBQUUsWUFBWSxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sQ0FBQyxDQUFDLElBQUksQ0FDbkYsU0FBUzs7OztRQUFDLFdBQVcsQ0FBQyxFQUFFLENBQ3RCLElBQUksQ0FBQyxJQUFJLENBQUMsSUFBSSxDQUFTLFNBQVMsRUFBRSxZQUFZLENBQUMsQ0FBQyxJQUFJLENBQ2xELEdBQUc7Ozs7UUFBQyxpQkFBaUIsQ0FBQyxFQUFFLENBQ3RCLFdBQVc7WUFDVCxDQUFDLENBQUMsV0FBVyxDQUFDLFFBQVEsQ0FBQyxPQUFPLENBQUMsQ0FBQyxZQUFZLENBQUMscUJBQXFCLEVBQUUsZ0JBQWdCLENBQUMsaUJBQWlCLENBQUMsQ0FBQyxDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztZQUNuSCxDQUFDLENBQUMsU0FBUyxFQUNkLEVBQ0QsU0FBUzs7OztRQUFDLGlCQUFpQixDQUFDLEVBQUUsQ0FDNUIsSUFBSSxDQUFDLEtBQUs7YUFDUCxZQUFZLENBQUMsV0FBVyxFQUFFLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxZQUFZLENBQUMsV0FBVyxDQUFDO2FBQ2hGLElBQUksQ0FBQyxHQUFHOzs7O1FBQUMsU0FBUyxDQUFDLEVBQUUsQ0FBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLENBQUMsRUFBQyxDQUFDLEVBQzlELENBQ0YsRUFDRixFQUNELFNBQVM7Ozs7UUFBQyxDQUFDLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLEVBQUUsRUFBRSxDQUFDLElBQUksQ0FBQyxnQkFBZ0IsQ0FBSSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFFBQVEsQ0FBQyxFQUFDLENBQ2hJLENBQUM7SUFDSixDQUFDOzs7Ozs7Ozs7O0lBRU8sZ0JBQWdCLENBQUksWUFBNEIsRUFBRSxpQkFBeUIsRUFBRSxTQUFpQixFQUFFLFFBQWdCOztjQUNoSCxJQUFJLEdBQUcsRUFBRSxZQUFZLEVBQUUsaUJBQWlCLEVBQUUsU0FBUyxFQUFFLFFBQVEsRUFBRTtjQUMvRCxFQUFFLGVBQWUsRUFBRSxPQUFPLEVBQUUsR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU87Y0FDbEQsRUFBRSxNQUFNLEdBQUcsTUFBTSxFQUFFLEdBQUcsRUFBRSxHQUFHLFlBQVk7O2NBQ3ZDLG1CQUFtQixHQUFHLE9BQU8sQ0FBQyxDQUFDLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRztRQUNqRSxPQUFPLElBQUksQ0FBQyxJQUFJLENBQUMsT0FBTyxDQUFJLE1BQU0sRUFBRSxtQkFBbUIsRUFBRSxFQUFFLElBQUksRUFBRSxlQUFlLEVBQUUsQ0FBQyxDQUFDO0lBQ3RGLENBQUM7OztZQS9CRixVQUFVOzs7O1lBVkYsVUFBVTtZQU9WLFlBQVk7WUFGWixhQUFhOzs7Ozs7O0lBT1IsNkJBQXdCOzs7OztJQUFFLDhCQUEyQjs7Ozs7SUFBRSwrQkFBNkIiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBJbmplY3RhYmxlIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuaW1wb3J0IHsgbWFwLCBzd2l0Y2hNYXAsIHRhcCB9IGZyb20gJ3J4anMvb3BlcmF0b3JzJztcclxuaW1wb3J0IHsgSU9hdXRoMU9wdGlvbnMgfSBmcm9tICcuL2NvbmZpZy1pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgQ29uZmlnU2VydmljZSB9IGZyb20gJy4vY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBJT2F1dGhTZXJ2aWNlIH0gZnJvbSAnLi9vYXV0aC1zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9wdXBTZXJ2aWNlIH0gZnJvbSAnLi9wb3B1cC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgYnVpbGRRdWVyeVN0cmluZywgam9pblVybCB9IGZyb20gJy4vdXRpbHMnO1xyXG5cclxuQEluamVjdGFibGUoKVxyXG5leHBvcnQgY2xhc3MgT2F1dGgxU2VydmljZSBpbXBsZW1lbnRzIElPYXV0aFNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBwb3B1cDogUG9wdXBTZXJ2aWNlLCBwcml2YXRlIGNvbmZpZzogQ29uZmlnU2VydmljZSkge31cclxuXHJcbiAgb3BlbjxUIGV4dGVuZHMgb2JqZWN0IHwgc3RyaW5nID0gYW55PihvYXV0aE9wdGlvbnM6IElPYXV0aDFPcHRpb25zLCB1c2VyRGF0YTogb2JqZWN0KTogT2JzZXJ2YWJsZTxUPiB7XHJcbiAgICBjb25zdCBzZXJ2ZXJVcmwgPSB0aGlzLmNvbmZpZy5vcHRpb25zLmJhc2VVcmwgPyBqb2luVXJsKHRoaXMuY29uZmlnLm9wdGlvbnMuYmFzZVVybCwgb2F1dGhPcHRpb25zLnVybCkgOiBvYXV0aE9wdGlvbnMudXJsO1xyXG4gICAgcmV0dXJuIHRoaXMucG9wdXAub3BlbignYWJvdXQ6YmxhbmsnLCBvYXV0aE9wdGlvbnMsIHRoaXMuY29uZmlnLm9wdGlvbnMuY29yZG92YSkucGlwZShcclxuICAgICAgc3dpdGNoTWFwKHBvcHVwV2luZG93ID0+XHJcbiAgICAgICAgdGhpcy5odHRwLnBvc3Q8b2JqZWN0PihzZXJ2ZXJVcmwsIG9hdXRoT3B0aW9ucykucGlwZShcclxuICAgICAgICAgIHRhcChhdXRob3JpemF0aW9uRGF0YSA9PlxyXG4gICAgICAgICAgICBwb3B1cFdpbmRvd1xyXG4gICAgICAgICAgICAgID8gcG9wdXBXaW5kb3cubG9jYXRpb24ucmVwbGFjZShbb2F1dGhPcHRpb25zLmF1dGhvcml6YXRpb25FbmRwb2ludCwgYnVpbGRRdWVyeVN0cmluZyhhdXRob3JpemF0aW9uRGF0YSldLmpvaW4oJz8nKSlcclxuICAgICAgICAgICAgICA6IHVuZGVmaW5lZFxyXG4gICAgICAgICAgKSxcclxuICAgICAgICAgIHN3aXRjaE1hcChhdXRob3JpemF0aW9uRGF0YSA9PlxyXG4gICAgICAgICAgICB0aGlzLnBvcHVwXHJcbiAgICAgICAgICAgICAgLndhaXRGb3JDbG9zZShwb3B1cFdpbmRvdywgdGhpcy5jb25maWcub3B0aW9ucy5jb3Jkb3ZhLCBvYXV0aE9wdGlvbnMucmVkaXJlY3RVcmkpXHJcbiAgICAgICAgICAgICAgLnBpcGUobWFwKG9hdXRoRGF0YSA9PiAoeyBhdXRob3JpemF0aW9uRGF0YSwgb2F1dGhEYXRhIH0pKSlcclxuICAgICAgICAgIClcclxuICAgICAgICApXHJcbiAgICAgICksXHJcbiAgICAgIHN3aXRjaE1hcCgoeyBhdXRob3JpemF0aW9uRGF0YSwgb2F1dGhEYXRhIH0pID0+IHRoaXMuZXhjaGFuZ2VGb3JUb2tlbjxUPihvYXV0aE9wdGlvbnMsIGF1dGhvcml6YXRpb25EYXRhLCBvYXV0aERhdGEsIHVzZXJEYXRhKSlcclxuICAgICk7XHJcbiAgfVxyXG5cclxuICBwcml2YXRlIGV4Y2hhbmdlRm9yVG9rZW48VD4ob2F1dGhPcHRpb25zOiBJT2F1dGgxT3B0aW9ucywgYXV0aG9yaXphdGlvbkRhdGE6IG9iamVjdCwgb2F1dGhEYXRhOiBvYmplY3QsIHVzZXJEYXRhOiBvYmplY3QpIHtcclxuICAgIGNvbnN0IGJvZHkgPSB7IG9hdXRoT3B0aW9ucywgYXV0aG9yaXphdGlvbkRhdGEsIG9hdXRoRGF0YSwgdXNlckRhdGEgfTtcclxuICAgIGNvbnN0IHsgd2l0aENyZWRlbnRpYWxzLCBiYXNlVXJsIH0gPSB0aGlzLmNvbmZpZy5vcHRpb25zO1xyXG4gICAgY29uc3QgeyBtZXRob2QgPSAnUE9TVCcsIHVybCB9ID0gb2F1dGhPcHRpb25zO1xyXG4gICAgY29uc3QgZXhjaGFuZ2VGb3JUb2tlblVybCA9IGJhc2VVcmwgPyBqb2luVXJsKGJhc2VVcmwsIHVybCkgOiB1cmw7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3Q8VD4obWV0aG9kLCBleGNoYW5nZUZvclRva2VuVXJsLCB7IGJvZHksIHdpdGhDcmVkZW50aWFscyB9KTtcclxuICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm2015/lib/storage-service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | /** 6 | * @abstract 7 | */ 8 | export class StorageService { 9 | } 10 | if (false) { 11 | /** 12 | * @abstract 13 | * @param {?} storageType 14 | * @return {?} 15 | */ 16 | StorageService.prototype.updateStorageType = function (storageType) { }; 17 | /** 18 | * @abstract 19 | * @param {?} key 20 | * @return {?} 21 | */ 22 | StorageService.prototype.get = function (key) { }; 23 | /** 24 | * @abstract 25 | * @param {?} key 26 | * @param {?} value 27 | * @param {?} date 28 | * @return {?} 29 | */ 30 | StorageService.prototype.set = function (key, value, date) { }; 31 | /** 32 | * @abstract 33 | * @param {?} key 34 | * @return {?} 35 | */ 36 | StorageService.prototype.remove = function (key) { }; 37 | } 38 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmcyLXVpLWF1dGgvIiwic291cmNlcyI6WyJsaWIvc3RvcmFnZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQSxNQUFNLE9BQWdCLGNBQWM7Q0FRbkM7Ozs7Ozs7SUFQQyx3RUFBOEQ7Ozs7OztJQUU5RCxrREFBa0M7Ozs7Ozs7O0lBRWxDLCtEQUE2RDs7Ozs7O0lBRTdELHFEQUFtQyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IFN0b3JhZ2VUeXBlIH0gZnJvbSAnLi9zdG9yYWdlLXR5cGUuZW51bSc7XHJcblxyXG5leHBvcnQgYWJzdHJhY3QgY2xhc3MgU3RvcmFnZVNlcnZpY2Uge1xyXG4gIGFic3RyYWN0IHVwZGF0ZVN0b3JhZ2VUeXBlKHN0b3JhZ2VUeXBlOiBTdG9yYWdlVHlwZSk6IGJvb2xlYW47XHJcblxyXG4gIGFic3RyYWN0IGdldChrZXk6IHN0cmluZyk6IHN0cmluZztcclxuXHJcbiAgYWJzdHJhY3Qgc2V0KGtleTogc3RyaW5nLCB2YWx1ZTogc3RyaW5nLCBkYXRlOiBzdHJpbmcpOiB2b2lkO1xyXG5cclxuICBhYnN0cmFjdCByZW1vdmUoa2V5OiBzdHJpbmcpOiB2b2lkO1xyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm2015/lib/storage-type.enum.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | /** @enum {string} */ 6 | const StorageType = { 7 | NONE: 'none', 8 | MEMORY: 'memory', 9 | LOCAL_STORAGE: 'localStorage', 10 | SESSION_STORAGE: 'sessionStorage', 11 | COOKIE: 'cookie', 12 | SESSION_COOKIE: 'sessionCookie', 13 | }; 14 | export { StorageType }; 15 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS10eXBlLmVudW0uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZzItdWktYXV0aC8iLCJzb3VyY2VzIjpbImxpYi9zdG9yYWdlLXR5cGUuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7SUFDRSxNQUFPLE1BQU07SUFDYixRQUFTLFFBQVE7SUFDakIsZUFBZ0IsY0FBYztJQUM5QixpQkFBa0IsZ0JBQWdCO0lBQ2xDLFFBQVMsUUFBUTtJQUNqQixnQkFBaUIsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFN0b3JhZ2VUeXBlIHtcclxuICBOT05FID0gJ25vbmUnLFxyXG4gIE1FTU9SWSA9ICdtZW1vcnknLFxyXG4gIExPQ0FMX1NUT1JBR0UgPSAnbG9jYWxTdG9yYWdlJyxcclxuICBTRVNTSU9OX1NUT1JBR0UgPSAnc2Vzc2lvblN0b3JhZ2UnLFxyXG4gIENPT0tJRSA9ICdjb29raWUnLFxyXG4gIFNFU1NJT05fQ09PS0lFID0gJ3Nlc3Npb25Db29raWUnXHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm2015/lib/utils.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | /** 6 | * Created by Ron on 17/12/2015. 7 | * @param {?} baseUrl 8 | * @param {?} url 9 | * @return {?} 10 | */ 11 | export function joinUrl(baseUrl, url) { 12 | if (/^(?:[a-z]+:)?\/\//i.test(url)) { 13 | return url; 14 | } 15 | /** @type {?} */ 16 | const joined = [baseUrl, url].join('/'); 17 | return joined 18 | .replace(/[\/]+/g, '/') 19 | .replace(/\/\?/g, '?') 20 | .replace(/\/\#/g, '#') 21 | .replace(/\:\//g, '://'); 22 | } 23 | /** 24 | * @param {?} obj 25 | * @return {?} 26 | */ 27 | export function buildQueryString(obj) { 28 | return Object.keys(obj) 29 | .map((/** 30 | * @param {?} key 31 | * @return {?} 32 | */ 33 | key => (!!obj[key] ? `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}` : key))) 34 | .join('&'); 35 | } 36 | /** 37 | * @param {?=} w 38 | * @return {?} 39 | */ 40 | export function getWindowOrigin(w) { 41 | if (!w && typeof window !== 'undefined') { 42 | w = window; 43 | } 44 | try { 45 | if (!w || !w.location) { 46 | return null; 47 | } 48 | if (!w.location.origin) { 49 | return `${w.location.protocol}//${w.location.hostname}${w.location.port ? ':' + w.location.port : ''}`; 50 | } 51 | return w.location.origin; 52 | } 53 | catch (error) { 54 | return null; 55 | // ignore DOMException: Blocked a frame with origin from accessing a cross-origin frame. 56 | // error instanceof DOMException && error.name === 'SecurityError' 57 | } 58 | } 59 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZzItdWktYXV0aC8iLCJzb3VyY2VzIjpbImxpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBTUEsTUFBTSxVQUFVLE9BQU8sQ0FBQyxPQUFlLEVBQUUsR0FBVztJQUNsRCxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNsQyxPQUFPLEdBQUcsQ0FBQztLQUNaOztVQUVLLE1BQU0sR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBRXZDLE9BQU8sTUFBTTtTQUNWLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDO1NBQ3RCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDN0IsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsR0FBVztJQUMxQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ3BCLEdBQUc7Ozs7SUFBQyxHQUFHLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRyxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsSUFBSSxrQkFBa0IsQ0FBQyxHQUFHLENBQUMsR0FBRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQUMsQ0FBQyxHQUFHLENBQUMsRUFBQztTQUM3RixJQUFJLENBQUMsR0FBRyxDQUFDLENBQUM7QUFDZixDQUFDOzs7OztBQUVELE1BQU0sVUFBVSxlQUFlLENBQUMsQ0FBVTtJQUN4QyxJQUFJLENBQUMsQ0FBQyxJQUFJLE9BQU8sTUFBTSxLQUFLLFdBQVcsRUFBRTtRQUN2QyxDQUFDLEdBQUcsTUFBTSxDQUFDO0tBQ1o7SUFDRCxJQUFJO1FBQ0YsSUFBSSxDQUFDLENBQUMsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLEVBQUU7WUFDckIsT0FBTyxJQUFJLENBQUM7U0FDYjtRQUNELElBQUksQ0FBQyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sRUFBRTtZQUN0QixPQUFPLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEtBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLEdBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxFQUFFLENBQUM7U0FDeEc7UUFDRCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0tBQzFCO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLElBQUksQ0FBQztRQUNaLHdGQUF3RjtRQUN4RixrRUFBa0U7S0FDbkU7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG4vKipcclxuICogQ3JlYXRlZCBieSBSb24gb24gMTcvMTIvMjAxNS5cclxuICovXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gam9pblVybChiYXNlVXJsOiBzdHJpbmcsIHVybDogc3RyaW5nKSB7XHJcbiAgaWYgKC9eKD86W2Etel0rOik/XFwvXFwvL2kudGVzdCh1cmwpKSB7XHJcbiAgICByZXR1cm4gdXJsO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgam9pbmVkID0gW2Jhc2VVcmwsIHVybF0uam9pbignLycpO1xyXG5cclxuICByZXR1cm4gam9pbmVkXHJcbiAgICAucmVwbGFjZSgvW1xcL10rL2csICcvJylcclxuICAgIC5yZXBsYWNlKC9cXC9cXD8vZywgJz8nKVxyXG4gICAgLnJlcGxhY2UoL1xcL1xcIy9nLCAnIycpXHJcbiAgICAucmVwbGFjZSgvXFw6XFwvL2csICc6Ly8nKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUXVlcnlTdHJpbmcob2JqOiBvYmplY3QpIHtcclxuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxyXG4gICAgLm1hcChrZXkgPT4gKCEhb2JqW2tleV0gPyBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQob2JqW2tleV0pfWAgOiBrZXkpKVxyXG4gICAgLmpvaW4oJyYnKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFdpbmRvd09yaWdpbih3PzogV2luZG93KSB7XHJcbiAgaWYgKCF3ICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICB3ID0gd2luZG93O1xyXG4gIH1cclxuICB0cnkge1xyXG4gICAgaWYgKCF3IHx8ICF3LmxvY2F0aW9uKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKCF3LmxvY2F0aW9uLm9yaWdpbikge1xyXG4gICAgICByZXR1cm4gYCR7dy5sb2NhdGlvbi5wcm90b2NvbH0vLyR7dy5sb2NhdGlvbi5ob3N0bmFtZX0ke3cubG9jYXRpb24ucG9ydCA/ICc6JyArIHcubG9jYXRpb24ucG9ydCA6ICcnfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdy5sb2NhdGlvbi5vcmlnaW47XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gICAgLy8gaWdub3JlIERPTUV4Y2VwdGlvbjogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luIGZyb20gYWNjZXNzaW5nIGEgY3Jvc3Mtb3JpZ2luIGZyYW1lLlxyXG4gICAgLy8gZXJyb3IgaW5zdGFuY2VvZiBET01FeGNlcHRpb24gJiYgZXJyb3IubmFtZSA9PT0gJ1NlY3VyaXR5RXJyb3InXHJcbiAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm2015/ng2-ui-auth.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | /** 6 | * Generated bundle index. Do not edit. 7 | */ 8 | export { Ng2UiAuthModule, LocalService, Oauth2Service, Oauth1Service, PopupService, OauthService, SharedService, StorageService, BrowserStorageService, AuthService, ConfigService, JwtInterceptor, CONFIG_OPTIONS, StorageType } from './public_api'; 9 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLXVpLWF1dGguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZzItdWktYXV0aC8iLCJzb3VyY2VzIjpbIm5nMi11aS1hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSx1T0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG5cbmV4cG9ydCB7SVBhcnRpYWxDb25maWdPcHRpb25zIGFzIMm1YX0gZnJvbSAnLi9saWIvY29uZmlnLWludGVyZmFjZXMnOyJdfQ== -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm2015/public_api.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | import { Ng2UiAuthModule } from './lib/ng2-ui-auth.module'; 6 | import { LocalService } from './lib/local.service'; 7 | import { Oauth2Service } from './lib/oauth2.service'; 8 | import { Oauth1Service } from './lib/oauth1.service'; 9 | import { PopupService } from './lib/popup.service'; 10 | import { OauthService } from './lib/oauth.service'; 11 | import { SharedService } from './lib/shared.service'; 12 | import { StorageService } from './lib/storage-service'; 13 | import { BrowserStorageService } from './lib/browser-storage.service'; 14 | import { AuthService } from './lib/auth.service'; 15 | import { ConfigService, CONFIG_OPTIONS } from './lib/config.service'; 16 | import { JwtInterceptor } from './lib/interceptor.service'; 17 | import { StorageType } from './lib/storage-type.enum'; 18 | /* 19 | * Public API Surface of ng2-ui-auth 20 | */ 21 | export { Ng2UiAuthModule, LocalService, Oauth2Service, Oauth1Service, PopupService, OauthService, SharedService, StorageService, BrowserStorageService, AuthService, ConfigService, JwtInterceptor, CONFIG_OPTIONS, StorageType }; 22 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi11aS1hdXRoLyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7O0FBS3RELE9BQU8sRUFDTCxlQUFlLEVBQ2YsWUFBWSxFQUNaLGFBQWEsRUFDYixhQUFhLEVBQ2IsWUFBWSxFQUNaLFlBQVksRUFDWixhQUFhLEVBQ2IsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsYUFBYSxFQUNiLGNBQWMsRUFDZCxjQUFjLEVBRWQsV0FBVyxFQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZzJVaUF1dGhNb2R1bGUgfSBmcm9tICcuL2xpYi9uZzItdWktYXV0aC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBMb2NhbFNlcnZpY2UgfSBmcm9tICcuL2xpYi9sb2NhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2F1dGgyU2VydmljZSB9IGZyb20gJy4vbGliL29hdXRoMi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2F1dGgxU2VydmljZSB9IGZyb20gJy4vbGliL29hdXRoMS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9wdXBTZXJ2aWNlIH0gZnJvbSAnLi9saWIvcG9wdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IE9hdXRoU2VydmljZSB9IGZyb20gJy4vbGliL29hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi9saWIvc2hhcmVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbGliL3N0b3JhZ2Utc2VydmljZSc7XHJcbmltcG9ydCB7IEJyb3dzZXJTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbGliL2Jyb3dzZXItc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2xpYi9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBDT05GSUdfT1BUSU9OUyB9IGZyb20gJy4vbGliL2NvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSnd0SW50ZXJjZXB0b3IgfSBmcm9tICcuL2xpYi9pbnRlcmNlcHRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSVByb3ZpZGVycyB9IGZyb20gJy4vbGliL2NvbmZpZy1pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgU3RvcmFnZVR5cGUgfSBmcm9tICcuL2xpYi9zdG9yYWdlLXR5cGUuZW51bSc7XHJcblxyXG4vKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgbmcyLXVpLWF1dGhcclxuICovXHJcbmV4cG9ydCB7XHJcbiAgTmcyVWlBdXRoTW9kdWxlLFxyXG4gIExvY2FsU2VydmljZSxcclxuICBPYXV0aDJTZXJ2aWNlLFxyXG4gIE9hdXRoMVNlcnZpY2UsXHJcbiAgUG9wdXBTZXJ2aWNlLFxyXG4gIE9hdXRoU2VydmljZSxcclxuICBTaGFyZWRTZXJ2aWNlLFxyXG4gIFN0b3JhZ2VTZXJ2aWNlLFxyXG4gIEJyb3dzZXJTdG9yYWdlU2VydmljZSxcclxuICBBdXRoU2VydmljZSxcclxuICBDb25maWdTZXJ2aWNlLFxyXG4gIEp3dEludGVyY2VwdG9yLFxyXG4gIENPTkZJR19PUFRJT05TLFxyXG4gIElQcm92aWRlcnMsXHJcbiAgU3RvcmFnZVR5cGVcclxufTtcclxuIl19 -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm5/lib/config-interfaces.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | /** 6 | * @record 7 | */ 8 | export function IPopupOptions() { } 9 | if (false) { 10 | /** @type {?|undefined} */ 11 | IPopupOptions.prototype.width; 12 | /** @type {?|undefined} */ 13 | IPopupOptions.prototype.height; 14 | /** @type {?|undefined} */ 15 | IPopupOptions.prototype.left; 16 | /** @type {?|undefined} */ 17 | IPopupOptions.prototype.top; 18 | /** @type {?|undefined} */ 19 | IPopupOptions.prototype.visibleToolbar; 20 | } 21 | /** 22 | * @record 23 | */ 24 | export function IOauth1Options() { } 25 | if (false) { 26 | /** @type {?|undefined} */ 27 | IOauth1Options.prototype.url; 28 | /** @type {?|undefined} */ 29 | IOauth1Options.prototype.name; 30 | /** @type {?|undefined} */ 31 | IOauth1Options.prototype.redirectUri; 32 | /** @type {?|undefined} */ 33 | IOauth1Options.prototype.popupOptions; 34 | /** @type {?|undefined} */ 35 | IOauth1Options.prototype.authorizationEndpoint; 36 | /** @type {?|undefined} */ 37 | IOauth1Options.prototype.oauthType; 38 | /** @type {?|undefined} */ 39 | IOauth1Options.prototype.method; 40 | } 41 | /** 42 | * @record 43 | */ 44 | export function IOauth2Options() { } 45 | if (false) { 46 | /** @type {?|undefined} */ 47 | IOauth2Options.prototype.url; 48 | /** @type {?|undefined} */ 49 | IOauth2Options.prototype.name; 50 | /** @type {?|undefined} */ 51 | IOauth2Options.prototype.redirectUri; 52 | /** @type {?|undefined} */ 53 | IOauth2Options.prototype.popupOptions; 54 | /** @type {?|undefined} */ 55 | IOauth2Options.prototype.authorizationEndpoint; 56 | /** @type {?|undefined} */ 57 | IOauth2Options.prototype.oauthType; 58 | /** @type {?|undefined} */ 59 | IOauth2Options.prototype.method; 60 | /** @type {?|undefined} */ 61 | IOauth2Options.prototype.responseType; 62 | /** @type {?|undefined} */ 63 | IOauth2Options.prototype.clientId; 64 | /** @type {?|undefined} */ 65 | IOauth2Options.prototype.additionalUrlParams; 66 | /** @type {?|undefined} */ 67 | IOauth2Options.prototype.scopeDelimiter; 68 | /** @type {?|undefined} */ 69 | IOauth2Options.prototype.scope; 70 | /** @type {?|undefined} */ 71 | IOauth2Options.prototype.state; 72 | } 73 | /** 74 | * @record 75 | */ 76 | export function IProviders() { } 77 | /** 78 | * @record 79 | */ 80 | export function IConfigOptions() { } 81 | if (false) { 82 | /** @type {?} */ 83 | IConfigOptions.prototype.tokenRoot; 84 | /** @type {?} */ 85 | IConfigOptions.prototype.cordova; 86 | /** @type {?} */ 87 | IConfigOptions.prototype.baseUrl; 88 | /** @type {?} */ 89 | IConfigOptions.prototype.loginUrl; 90 | /** @type {?} */ 91 | IConfigOptions.prototype.signupUrl; 92 | /** @type {?} */ 93 | IConfigOptions.prototype.unlinkUrl; 94 | /** @type {?} */ 95 | IConfigOptions.prototype.tokenName; 96 | /** @type {?} */ 97 | IConfigOptions.prototype.tokenSeparator; 98 | /** @type {?} */ 99 | IConfigOptions.prototype.tokenPrefix; 100 | /** @type {?} */ 101 | IConfigOptions.prototype.authToken; 102 | /** @type {?} */ 103 | IConfigOptions.prototype.authHeader; 104 | /** @type {?} */ 105 | IConfigOptions.prototype.storageType; 106 | /** @type {?} */ 107 | IConfigOptions.prototype.providers; 108 | /** @type {?} */ 109 | IConfigOptions.prototype.withCredentials; 110 | /** @type {?} */ 111 | IConfigOptions.prototype.resolveToken; 112 | } 113 | /** 114 | * @record 115 | */ 116 | export function IPartialConfigOptions() { } 117 | if (false) { 118 | /** @type {?|undefined} */ 119 | IPartialConfigOptions.prototype.tokenRoot; 120 | /** @type {?|undefined} */ 121 | IPartialConfigOptions.prototype.cordova; 122 | /** @type {?|undefined} */ 123 | IPartialConfigOptions.prototype.baseUrl; 124 | /** @type {?|undefined} */ 125 | IPartialConfigOptions.prototype.loginUrl; 126 | /** @type {?|undefined} */ 127 | IPartialConfigOptions.prototype.signupUrl; 128 | /** @type {?|undefined} */ 129 | IPartialConfigOptions.prototype.unlinkUrl; 130 | /** @type {?|undefined} */ 131 | IPartialConfigOptions.prototype.tokenName; 132 | /** @type {?|undefined} */ 133 | IPartialConfigOptions.prototype.tokenSeparator; 134 | /** @type {?|undefined} */ 135 | IPartialConfigOptions.prototype.tokenPrefix; 136 | /** @type {?|undefined} */ 137 | IPartialConfigOptions.prototype.authToken; 138 | /** @type {?|undefined} */ 139 | IPartialConfigOptions.prototype.authHeader; 140 | /** @type {?|undefined} */ 141 | IPartialConfigOptions.prototype.storageType; 142 | /** @type {?|undefined} */ 143 | IPartialConfigOptions.prototype.providers; 144 | /** @type {?|undefined} */ 145 | IPartialConfigOptions.prototype.withCredentials; 146 | /** @type {?|undefined} */ 147 | IPartialConfigOptions.prototype.resolveToken; 148 | } 149 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiY29uZmlnLWludGVyZmFjZXMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZzItdWktYXV0aC8iLCJzb3VyY2VzIjpbImxpYi9jb25maWctaW50ZXJmYWNlcy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7O0FBRUEsbUNBTUM7OztJQUxDLDhCQUFlOztJQUNmLCtCQUFnQjs7SUFDaEIsNkJBQWM7O0lBQ2QsNEJBQWE7O0lBQ2IsdUNBQXlCOzs7OztBQUczQixvQ0FRQzs7O0lBUEMsNkJBQWE7O0lBQ2IsOEJBQWM7O0lBQ2QscUNBQXFCOztJQUNyQixzQ0FBNkI7O0lBQzdCLCtDQUErQjs7SUFDL0IsbUNBQWtCOztJQUNsQixnQ0FBZ0I7Ozs7O0FBR2xCLG9DQWdCQzs7O0lBZkMsNkJBQWE7O0lBQ2IsOEJBQWM7O0lBQ2QscUNBQXFCOztJQUNyQixzQ0FBNkI7O0lBQzdCLCtDQUErQjs7SUFDL0IsbUNBQWtCOztJQUNsQixnQ0FBZ0I7O0lBQ2hCLHNDQUFzQjs7SUFDdEIsa0NBQWtCOztJQUNsQiw2Q0FFRTs7SUFDRix3Q0FBd0I7O0lBQ3hCLCtCQUFpQjs7SUFDakIsK0JBQWdDOzs7OztBQUdsQyxnQ0FFQzs7OztBQUVELG9DQWdCQzs7O0lBZkMsbUNBQXlCOztJQUN6QixpQ0FBd0I7O0lBQ3hCLGlDQUFnQjs7SUFDaEIsa0NBQWlCOztJQUNqQixtQ0FBa0I7O0lBQ2xCLG1DQUFrQjs7SUFDbEIsbUNBQWtCOztJQUNsQix3Q0FBdUI7O0lBQ3ZCLHFDQUFvQjs7SUFDcEIsbUNBQWtCOztJQUNsQixvQ0FBbUI7O0lBQ25CLHFDQUF5Qjs7SUFDekIsbUNBQXNCOztJQUN0Qix5Q0FBeUI7O0lBQ3pCLHNDQUFnRTs7Ozs7QUFJbEUsMkNBZ0JDOzs7SUFmQywwQ0FBMEI7O0lBQzFCLHdDQUF5Qjs7SUFDekIsd0NBQWlCOztJQUNqQix5Q0FBa0I7O0lBQ2xCLDBDQUFtQjs7SUFDbkIsMENBQW1COztJQUNuQiwwQ0FBbUI7O0lBQ25CLCtDQUF3Qjs7SUFDeEIsNENBQXFCOztJQUNyQiwwQ0FBbUI7O0lBQ25CLDJDQUFvQjs7SUFDcEIsNENBQTBCOztJQUMxQiwwQ0FBdUI7O0lBQ3ZCLGdEQUEwQjs7SUFDMUIsNkNBQWlFIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgU3RvcmFnZVR5cGUgfSBmcm9tICcuL3N0b3JhZ2UtdHlwZS5lbnVtJztcclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBvcHVwT3B0aW9ucyB7XHJcbiAgd2lkdGg/OiBudW1iZXI7XHJcbiAgaGVpZ2h0PzogbnVtYmVyO1xyXG4gIGxlZnQ/OiBudW1iZXI7XHJcbiAgdG9wPzogbnVtYmVyO1xyXG4gIHZpc2libGVUb29sYmFyPzogYm9vbGVhbjtcclxufVxyXG5cclxuZXhwb3J0IGludGVyZmFjZSBJT2F1dGgxT3B0aW9ucyB7XHJcbiAgdXJsPzogc3RyaW5nO1xyXG4gIG5hbWU/OiBzdHJpbmc7XHJcbiAgcmVkaXJlY3RVcmk/OiBzdHJpbmc7XHJcbiAgcG9wdXBPcHRpb25zPzogSVBvcHVwT3B0aW9ucztcclxuICBhdXRob3JpemF0aW9uRW5kcG9pbnQ/OiBzdHJpbmc7XHJcbiAgb2F1dGhUeXBlPzogJzEuMCc7XHJcbiAgbWV0aG9kPzogc3RyaW5nO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPYXV0aDJPcHRpb25zIHtcclxuICB1cmw/OiBzdHJpbmc7XHJcbiAgbmFtZT86IHN0cmluZztcclxuICByZWRpcmVjdFVyaT86IHN0cmluZztcclxuICBwb3B1cE9wdGlvbnM/OiBJUG9wdXBPcHRpb25zO1xyXG4gIGF1dGhvcml6YXRpb25FbmRwb2ludD86IHN0cmluZztcclxuICBvYXV0aFR5cGU/OiAnMi4wJztcclxuICBtZXRob2Q/OiBzdHJpbmc7XHJcbiAgcmVzcG9uc2VUeXBlPzogc3RyaW5nO1xyXG4gIGNsaWVudElkPzogc3RyaW5nO1xyXG4gIGFkZGl0aW9uYWxVcmxQYXJhbXM/OiB7XHJcbiAgICBbcGFyYW1OYW1lOiBzdHJpbmddOiBzdHJpbmcgfCAoKCkgPT4gc3RyaW5nKSB8IG51bGwgfCB1bmRlZmluZWQ7XHJcbiAgfTtcclxuICBzY29wZURlbGltaXRlcj86IHN0cmluZztcclxuICBzY29wZT86IHN0cmluZ1tdO1xyXG4gIHN0YXRlPzogc3RyaW5nIHwgKCgpID0+IHN0cmluZyk7XHJcbn1cclxuXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVByb3ZpZGVycyB7XHJcbiAgW3Byb3ZpZGVyOiBzdHJpbmddOiBJT2F1dGgyT3B0aW9ucyB8IElPYXV0aDFPcHRpb25zO1xyXG59XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElDb25maWdPcHRpb25zIHtcclxuICB0b2tlblJvb3Q6IHN0cmluZyB8IG51bGw7XHJcbiAgY29yZG92YTogYm9vbGVhbiB8IG51bGw7XHJcbiAgYmFzZVVybDogc3RyaW5nO1xyXG4gIGxvZ2luVXJsOiBzdHJpbmc7XHJcbiAgc2lnbnVwVXJsOiBzdHJpbmc7XHJcbiAgdW5saW5rVXJsOiBzdHJpbmc7XHJcbiAgdG9rZW5OYW1lOiBzdHJpbmc7XHJcbiAgdG9rZW5TZXBhcmF0b3I6IHN0cmluZztcclxuICB0b2tlblByZWZpeDogc3RyaW5nO1xyXG4gIGF1dGhUb2tlbjogc3RyaW5nO1xyXG4gIGF1dGhIZWFkZXI6IHN0cmluZztcclxuICBzdG9yYWdlVHlwZTogU3RvcmFnZVR5cGU7XHJcbiAgcHJvdmlkZXJzOiBJUHJvdmlkZXJzO1xyXG4gIHdpdGhDcmVkZW50aWFsczogYm9vbGVhbjtcclxuICByZXNvbHZlVG9rZW46IChyZXNwb25zZTogYW55LCBjb25maWc6IElDb25maWdPcHRpb25zKSA9PiBzdHJpbmc7XHJcbn1cclxuXHJcbi8vIG5vdyBldmVuIHVzaW5nIHRzIDIuNy4yIFBhcnRpYWw8SUNvbmZpZ09wdGlvbnM+IGNhdXNlcyBcIkNvdWxkIG5vdCByZXNvbHZlIHR5cGUgUGFydGlhbFwiIGJ1aWxkIGVycm9yLi4uXHJcbmV4cG9ydCBpbnRlcmZhY2UgSVBhcnRpYWxDb25maWdPcHRpb25zIHtcclxuICB0b2tlblJvb3Q/OiBzdHJpbmcgfCBudWxsO1xyXG4gIGNvcmRvdmE/OiBib29sZWFuIHwgbnVsbDtcclxuICBiYXNlVXJsPzogc3RyaW5nO1xyXG4gIGxvZ2luVXJsPzogc3RyaW5nO1xyXG4gIHNpZ251cFVybD86IHN0cmluZztcclxuICB1bmxpbmtVcmw/OiBzdHJpbmc7XHJcbiAgdG9rZW5OYW1lPzogc3RyaW5nO1xyXG4gIHRva2VuU2VwYXJhdG9yPzogc3RyaW5nO1xyXG4gIHRva2VuUHJlZml4Pzogc3RyaW5nO1xyXG4gIGF1dGhUb2tlbj86IHN0cmluZztcclxuICBhdXRoSGVhZGVyPzogc3RyaW5nO1xyXG4gIHN0b3JhZ2VUeXBlPzogU3RvcmFnZVR5cGU7XHJcbiAgcHJvdmlkZXJzPzogSVByb3ZpZGVycztcclxuICB3aXRoQ3JlZGVudGlhbHM/OiBib29sZWFuO1xyXG4gIHJlc29sdmVUb2tlbj86IChyZXNwb25zZTogYW55LCBjb25maWc6IElDb25maWdPcHRpb25zKSA9PiBzdHJpbmc7XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm5/lib/interceptor.service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | import { Injectable } from '@angular/core'; 6 | import { SharedService } from './shared.service'; 7 | import { ConfigService } from './config.service'; 8 | var JwtInterceptor = /** @class */ (function () { 9 | function JwtInterceptor(shared, config) { 10 | this.shared = shared; 11 | this.config = config; 12 | } 13 | /** 14 | * @param {?} req 15 | * @param {?} next 16 | * @return {?} 17 | */ 18 | JwtInterceptor.prototype.intercept = /** 19 | * @param {?} req 20 | * @param {?} next 21 | * @return {?} 22 | */ 23 | function (req, next) { 24 | var _a; 25 | var _b = this.config.options, authHeader = _b.authHeader, authToken = _b.authToken; 26 | /** @type {?} */ 27 | var token = this.shared.getToken(); 28 | /** @type {?} */ 29 | var isAuthenticated = this.shared.isAuthenticated(); 30 | /** @type {?} */ 31 | var newReq = isAuthenticated && !req.headers.has(authHeader) ? req.clone({ setHeaders: (_a = {}, _a[authHeader] = authToken + " " + token, _a) }) : req; 32 | return next.handle(newReq); 33 | }; 34 | JwtInterceptor.decorators = [ 35 | { type: Injectable } 36 | ]; 37 | /** @nocollapse */ 38 | JwtInterceptor.ctorParameters = function () { return [ 39 | { type: SharedService }, 40 | { type: ConfigService } 41 | ]; }; 42 | return JwtInterceptor; 43 | }()); 44 | export { JwtInterceptor }; 45 | if (false) { 46 | /** 47 | * @type {?} 48 | * @private 49 | */ 50 | JwtInterceptor.prototype.shared; 51 | /** 52 | * @type {?} 53 | * @private 54 | */ 55 | JwtInterceptor.prototype.config; 56 | } 57 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoiaW50ZXJjZXB0b3Iuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi11aS1hdXRoLyIsInNvdXJjZXMiOlsibGliL2ludGVyY2VwdG9yLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFFM0MsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUdqRDtJQUVFLHdCQUFvQixNQUFxQixFQUFVLE1BQXFCO1FBQXBELFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFlO0lBQUcsQ0FBQzs7Ozs7O0lBRTVFLGtDQUFTOzs7OztJQUFULFVBQVUsR0FBcUIsRUFBRSxJQUFpQjs7UUFDMUMsSUFBQSx3QkFBK0MsRUFBN0MsMEJBQVUsRUFBRSx3QkFBaUM7O1lBQy9DLEtBQUssR0FBRyxJQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsRUFBRTs7WUFDOUIsZUFBZSxHQUFHLElBQUksQ0FBQyxNQUFNLENBQUMsZUFBZSxFQUFFOztZQUMvQyxNQUFNLEdBQ1YsZUFBZSxJQUFJLENBQUMsR0FBRyxDQUFDLE9BQU8sQ0FBQyxHQUFHLENBQUMsVUFBVSxDQUFDLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxLQUFLLENBQUMsRUFBRSxVQUFVLFlBQUksR0FBQyxVQUFVLElBQU0sU0FBUyxTQUFJLEtBQU8sS0FBRSxFQUFFLENBQUMsQ0FBQyxDQUFDLENBQUMsR0FBRztRQUM5SCxPQUFPLElBQUksQ0FBQyxNQUFNLENBQUMsTUFBTSxDQUFDLENBQUM7SUFDN0IsQ0FBQzs7Z0JBWEYsVUFBVTs7OztnQkFKRixhQUFhO2dCQUNiLGFBQWE7O0lBZXRCLHFCQUFDO0NBQUEsQUFaRCxJQVlDO1NBWFksY0FBYzs7Ozs7O0lBQ2IsZ0NBQTZCOzs7OztJQUFFLGdDQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cEludGVyY2VwdG9yLCBIdHRwUmVxdWVzdCwgSHR0cEhhbmRsZXIsIEh0dHBFdmVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJy4vc2hhcmVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IE9ic2VydmFibGUgfSBmcm9tICdyeGpzJztcclxuXHJcbkBJbmplY3RhYmxlKClcclxuZXhwb3J0IGNsYXNzIEp3dEludGVyY2VwdG9yIGltcGxlbWVudHMgSHR0cEludGVyY2VwdG9yIHtcclxuICBjb25zdHJ1Y3Rvcihwcml2YXRlIHNoYXJlZDogU2hhcmVkU2VydmljZSwgcHJpdmF0ZSBjb25maWc6IENvbmZpZ1NlcnZpY2UpIHt9XHJcblxyXG4gIGludGVyY2VwdChyZXE6IEh0dHBSZXF1ZXN0PGFueT4sIG5leHQ6IEh0dHBIYW5kbGVyKTogT2JzZXJ2YWJsZTxIdHRwRXZlbnQ8YW55Pj4ge1xyXG4gICAgY29uc3QgeyBhdXRoSGVhZGVyLCBhdXRoVG9rZW4gfSA9IHRoaXMuY29uZmlnLm9wdGlvbnM7XHJcbiAgICBjb25zdCB0b2tlbiA9IHRoaXMuc2hhcmVkLmdldFRva2VuKCk7XHJcbiAgICBjb25zdCBpc0F1dGhlbnRpY2F0ZWQgPSB0aGlzLnNoYXJlZC5pc0F1dGhlbnRpY2F0ZWQoKTtcclxuICAgIGNvbnN0IG5ld1JlcSA9XHJcbiAgICAgIGlzQXV0aGVudGljYXRlZCAmJiAhcmVxLmhlYWRlcnMuaGFzKGF1dGhIZWFkZXIpID8gcmVxLmNsb25lKHsgc2V0SGVhZGVyczogeyBbYXV0aEhlYWRlcl06IGAke2F1dGhUb2tlbn0gJHt0b2tlbn1gIH0gfSkgOiByZXE7XHJcbiAgICByZXR1cm4gbmV4dC5oYW5kbGUobmV3UmVxKTtcclxuICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm5/lib/local.service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | import { Injectable } from '@angular/core'; 6 | import { HttpClient } from '@angular/common/http'; 7 | import { SharedService } from './shared.service'; 8 | import { ConfigService } from './config.service'; 9 | import { joinUrl } from './utils'; 10 | import { tap } from 'rxjs/operators'; 11 | var LocalService = /** @class */ (function () { 12 | function LocalService(http, shared, config) { 13 | this.http = http; 14 | this.shared = shared; 15 | this.config = config; 16 | } 17 | /** 18 | * @template T 19 | * @param {?} user 20 | * @param {?=} url 21 | * @return {?} 22 | */ 23 | LocalService.prototype.login = /** 24 | * @template T 25 | * @param {?} user 26 | * @param {?=} url 27 | * @return {?} 28 | */ 29 | function (user, url) { 30 | var _this = this; 31 | return this.http 32 | .post(url || joinUrl(this.config.options.baseUrl, this.config.options.loginUrl), user) 33 | .pipe(tap((/** 34 | * @param {?} data 35 | * @return {?} 36 | */ 37 | function (data) { return _this.shared.setToken(data); }))); 38 | }; 39 | /** 40 | * @template T 41 | * @param {?} user 42 | * @param {?=} url 43 | * @return {?} 44 | */ 45 | LocalService.prototype.signup = /** 46 | * @template T 47 | * @param {?} user 48 | * @param {?=} url 49 | * @return {?} 50 | */ 51 | function (user, url) { 52 | return this.http.post(url || joinUrl(this.config.options.baseUrl, this.config.options.signupUrl), user); 53 | }; 54 | LocalService.decorators = [ 55 | { type: Injectable } 56 | ]; 57 | /** @nocollapse */ 58 | LocalService.ctorParameters = function () { return [ 59 | { type: HttpClient }, 60 | { type: SharedService }, 61 | { type: ConfigService } 62 | ]; }; 63 | return LocalService; 64 | }()); 65 | export { LocalService }; 66 | if (false) { 67 | /** 68 | * @type {?} 69 | * @private 70 | */ 71 | LocalService.prototype.http; 72 | /** 73 | * @type {?} 74 | * @private 75 | */ 76 | LocalService.prototype.shared; 77 | /** 78 | * @type {?} 79 | * @private 80 | */ 81 | LocalService.prototype.config; 82 | } 83 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibG9jYWwuc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi11aS1hdXRoLyIsInNvdXJjZXMiOlsibGliL2xvY2FsLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7OztBQUFBLE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxlQUFlLENBQUM7QUFDM0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLE9BQU8sRUFBRSxNQUFNLFNBQVMsQ0FBQztBQUNsQyxPQUFPLEVBQUUsR0FBRyxFQUFFLE1BQU0sZ0JBQWdCLENBQUM7QUFHckM7SUFFRSxzQkFBb0IsSUFBZ0IsRUFBVSxNQUFxQixFQUFVLE1BQXFCO1FBQTlFLFNBQUksR0FBSixJQUFJLENBQVk7UUFBVSxXQUFNLEdBQU4sTUFBTSxDQUFlO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtJQUFHLENBQUM7Ozs7Ozs7SUFFL0YsNEJBQUs7Ozs7OztJQUFaLFVBQXdDLElBQXFCLEVBQUUsR0FBWTtRQUEzRSxpQkFJQztRQUhDLE9BQU8sSUFBSSxDQUFDLElBQUk7YUFDYixJQUFJLENBQUksR0FBRyxJQUFJLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsUUFBUSxDQUFDLEVBQUUsSUFBSSxDQUFDO2FBQ3hGLElBQUksQ0FBQyxHQUFHOzs7O1FBQUMsVUFBQSxJQUFJLElBQUksT0FBQSxLQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsRUFBMUIsQ0FBMEIsRUFBQyxDQUFDLENBQUM7SUFDbkQsQ0FBQzs7Ozs7OztJQUVNLDZCQUFNOzs7Ozs7SUFBYixVQUF1QixJQUFxQixFQUFFLEdBQVk7UUFDeEQsT0FBTyxJQUFJLENBQUMsSUFBSSxDQUFDLElBQUksQ0FBSSxHQUFHLElBQUksT0FBTyxDQUFDLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLE9BQU8sRUFBRSxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsRUFBRSxJQUFJLENBQUMsQ0FBQztJQUM3RyxDQUFDOztnQkFaRixVQUFVOzs7O2dCQVBGLFVBQVU7Z0JBQ1YsYUFBYTtnQkFDYixhQUFhOztJQWtCdEIsbUJBQUM7Q0FBQSxBQWJELElBYUM7U0FaWSxZQUFZOzs7Ozs7SUFDWCw0QkFBd0I7Ozs7O0lBQUUsOEJBQTZCOzs7OztJQUFFLDhCQUE2QiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUgfSBmcm9tICdAYW5ndWxhci9jb3JlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgU2hhcmVkU2VydmljZSB9IGZyb20gJy4vc2hhcmVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IGpvaW5VcmwgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBMb2NhbFNlcnZpY2Uge1xyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBzaGFyZWQ6IFNoYXJlZFNlcnZpY2UsIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlKSB7fVxyXG5cclxuICBwdWJsaWMgbG9naW48VCBleHRlbmRzIHN0cmluZyB8IG9iamVjdD4odXNlcjogc3RyaW5nIHwgb2JqZWN0LCB1cmw/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHBcclxuICAgICAgLnBvc3Q8VD4odXJsIHx8IGpvaW5VcmwodGhpcy5jb25maWcub3B0aW9ucy5iYXNlVXJsLCB0aGlzLmNvbmZpZy5vcHRpb25zLmxvZ2luVXJsKSwgdXNlcilcclxuICAgICAgLnBpcGUodGFwKGRhdGEgPT4gdGhpcy5zaGFyZWQuc2V0VG9rZW4oZGF0YSkpKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyBzaWdudXA8VCA9IGFueT4odXNlcjogc3RyaW5nIHwgb2JqZWN0LCB1cmw/OiBzdHJpbmcpOiBPYnNlcnZhYmxlPFQ+IHtcclxuICAgIHJldHVybiB0aGlzLmh0dHAucG9zdDxUPih1cmwgfHwgam9pblVybCh0aGlzLmNvbmZpZy5vcHRpb25zLmJhc2VVcmwsIHRoaXMuY29uZmlnLm9wdGlvbnMuc2lnbnVwVXJsKSwgdXNlcik7XHJcbiAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm5/lib/ng2-ui-auth.module.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | import * as tslib_1 from "tslib"; 6 | import { NgModule } from '@angular/core'; 7 | import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; 8 | import { CONFIG_OPTIONS, ConfigService } from './config.service'; 9 | import { StorageService } from './storage-service'; 10 | import { BrowserStorageService } from './browser-storage.service'; 11 | import { SharedService } from './shared.service'; 12 | import { JwtInterceptor } from './interceptor.service'; 13 | import { OauthService } from './oauth.service'; 14 | import { HttpClient } from '@angular/common/http'; 15 | import { PopupService } from './popup.service'; 16 | import { LocalService } from './local.service'; 17 | import { AuthService } from './auth.service'; 18 | var Ng2UiAuthModule = /** @class */ (function () { 19 | function Ng2UiAuthModule() { 20 | } 21 | /** 22 | * @param {?=} configOptions 23 | * @param {?=} defaultJwtInterceptor 24 | * @return {?} 25 | */ 26 | Ng2UiAuthModule.forRoot = /** 27 | * @param {?=} configOptions 28 | * @param {?=} defaultJwtInterceptor 29 | * @return {?} 30 | */ 31 | function (configOptions, defaultJwtInterceptor) { 32 | if (defaultJwtInterceptor === void 0) { defaultJwtInterceptor = true; } 33 | return { 34 | ngModule: Ng2UiAuthModule, 35 | providers: tslib_1.__spread((configOptions ? [{ provide: CONFIG_OPTIONS, useValue: configOptions }] : []), [ 36 | { provide: ConfigService, useClass: ConfigService, deps: [CONFIG_OPTIONS] }, 37 | { provide: StorageService, useClass: BrowserStorageService, deps: [ConfigService] }, 38 | { provide: SharedService, useClass: SharedService, deps: [StorageService, ConfigService] }, 39 | { provide: LocalService, useClass: LocalService, deps: [HttpClient, SharedService, ConfigService] }, 40 | { provide: PopupService, useClass: PopupService, deps: [ConfigService] }, 41 | { provide: OauthService, useClass: OauthService, deps: [HttpClient, SharedService, ConfigService, PopupService] }, 42 | { provide: AuthService, useClass: AuthService, deps: [SharedService, LocalService, OauthService] } 43 | ], (defaultJwtInterceptor 44 | ? [{ provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true, deps: [SharedService, ConfigService] }] 45 | : [])) 46 | }; 47 | }; 48 | Ng2UiAuthModule.decorators = [ 49 | { type: NgModule, args: [{ 50 | imports: [HttpClientModule], 51 | declarations: [], 52 | exports: [] 53 | },] } 54 | ]; 55 | return Ng2UiAuthModule; 56 | }()); 57 | export { Ng2UiAuthModule }; 58 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLXVpLWF1dGgubW9kdWxlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmcyLXVpLWF1dGgvIiwic291cmNlcyI6WyJsaWIvbmcyLXVpLWF1dGgubW9kdWxlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7O0FBQUEsT0FBTyxFQUFFLFFBQVEsRUFBdUIsTUFBTSxlQUFlLENBQUM7QUFDOUQsT0FBTyxFQUFFLGdCQUFnQixFQUFFLGlCQUFpQixFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFFM0UsT0FBTyxFQUFFLGNBQWMsRUFBRSxhQUFhLEVBQUUsTUFBTSxrQkFBa0IsQ0FBQztBQUNqRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sbUJBQW1CLENBQUM7QUFDbkQsT0FBTyxFQUFFLHFCQUFxQixFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFDbEUsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFVBQVUsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ2xELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0saUJBQWlCLENBQUM7QUFDL0MsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLGdCQUFnQixDQUFDO0FBRTdDO0lBQUE7SUF3QkEsQ0FBQzs7Ozs7O0lBbEJRLHVCQUFPOzs7OztJQUFkLFVBQWUsYUFBcUMsRUFBRSxxQkFBNEI7UUFBNUIsc0NBQUEsRUFBQSw0QkFBNEI7UUFDaEYsT0FBTztZQUNMLFFBQVEsRUFBRSxlQUFlO1lBQ3pCLFNBQVMsbUJBQ0osQ0FBQyxhQUFhLENBQUMsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsY0FBYyxFQUFFLFFBQVEsRUFBRSxhQUFhLEVBQUUsQ0FBQyxDQUFDLENBQUMsQ0FBQyxFQUFFLENBQUM7Z0JBQ2hGLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxRQUFRLEVBQUUsYUFBYSxFQUFFLElBQUksRUFBRSxDQUFDLGNBQWMsQ0FBQyxFQUFFO2dCQUMzRSxFQUFFLE9BQU8sRUFBRSxjQUFjLEVBQUUsUUFBUSxFQUFFLHFCQUFxQixFQUFFLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUNuRixFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsQ0FBQyxjQUFjLEVBQUUsYUFBYSxDQUFDLEVBQUU7Z0JBQzFGLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLFVBQVUsRUFBRSxhQUFhLEVBQUUsYUFBYSxDQUFDLEVBQUU7Z0JBQ25HLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsWUFBWSxFQUFFLElBQUksRUFBRSxDQUFDLGFBQWEsQ0FBQyxFQUFFO2dCQUN4RSxFQUFFLE9BQU8sRUFBRSxZQUFZLEVBQUUsUUFBUSxFQUFFLFlBQVksRUFBRSxJQUFJLEVBQUUsQ0FBQyxVQUFVLEVBQUUsYUFBYSxFQUFFLGFBQWEsRUFBRSxZQUFZLENBQUMsRUFBRTtnQkFDakgsRUFBRSxPQUFPLEVBQUUsV0FBVyxFQUFFLFFBQVEsRUFBRSxXQUFXLEVBQUUsSUFBSSxFQUFFLENBQUMsYUFBYSxFQUFFLFlBQVksRUFBRSxZQUFZLENBQUMsRUFBRTtlQUMvRixDQUFDLHFCQUFxQjtnQkFDdkIsQ0FBQyxDQUFDLENBQUMsRUFBRSxPQUFPLEVBQUUsaUJBQWlCLEVBQUUsUUFBUSxFQUFFLGNBQWMsRUFBRSxLQUFLLEVBQUUsSUFBSSxFQUFFLElBQUksRUFBRSxDQUFDLGFBQWEsRUFBRSxhQUFhLENBQUMsRUFBRSxDQUFDO2dCQUMvRyxDQUFDLENBQUMsRUFBRSxDQUFDLENBQ1I7U0FDRixDQUFDO0lBQ0osQ0FBQzs7Z0JBdkJGLFFBQVEsU0FBQztvQkFDUixPQUFPLEVBQUUsQ0FBQyxnQkFBZ0IsQ0FBQztvQkFDM0IsWUFBWSxFQUFFLEVBQUU7b0JBQ2hCLE9BQU8sRUFBRSxFQUFFO2lCQUNaOztJQW9CRCxzQkFBQztDQUFBLEFBeEJELElBd0JDO1NBbkJZLGVBQWUiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZ01vZHVsZSwgTW9kdWxlV2l0aFByb3ZpZGVycyB9IGZyb20gJ0Bhbmd1bGFyL2NvcmUnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50TW9kdWxlLCBIVFRQX0lOVEVSQ0VQVE9SUyB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSUNvbmZpZ09wdGlvbnMsIElQYXJ0aWFsQ29uZmlnT3B0aW9ucyB9IGZyb20gJy4vY29uZmlnLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBDT05GSUdfT1BUSU9OUywgQ29uZmlnU2VydmljZSB9IGZyb20gJy4vY29uZmlnLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vc3RvcmFnZS1zZXJ2aWNlJztcclxuaW1wb3J0IHsgQnJvd3NlclN0b3JhZ2VTZXJ2aWNlIH0gZnJvbSAnLi9icm93c2VyLXN0b3JhZ2Uuc2VydmljZSc7XHJcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSnd0SW50ZXJjZXB0b3IgfSBmcm9tICcuL2ludGVyY2VwdG9yLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBPYXV0aFNlcnZpY2UgfSBmcm9tICcuL29hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBIdHRwQ2xpZW50IH0gZnJvbSAnQGFuZ3VsYXIvY29tbW9uL2h0dHAnO1xyXG5pbXBvcnQgeyBQb3B1cFNlcnZpY2UgfSBmcm9tICcuL3BvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBMb2NhbFNlcnZpY2UgfSBmcm9tICcuL2xvY2FsLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBBdXRoU2VydmljZSB9IGZyb20gJy4vYXV0aC5zZXJ2aWNlJztcclxuXHJcbkBOZ01vZHVsZSh7XHJcbiAgaW1wb3J0czogW0h0dHBDbGllbnRNb2R1bGVdLFxyXG4gIGRlY2xhcmF0aW9uczogW10sXHJcbiAgZXhwb3J0czogW11cclxufSlcclxuZXhwb3J0IGNsYXNzIE5nMlVpQXV0aE1vZHVsZSB7XHJcbiAgc3RhdGljIGZvclJvb3QoY29uZmlnT3B0aW9ucz86IElQYXJ0aWFsQ29uZmlnT3B0aW9ucywgZGVmYXVsdEp3dEludGVyY2VwdG9yID0gdHJ1ZSk6IE1vZHVsZVdpdGhQcm92aWRlcnMge1xyXG4gICAgcmV0dXJuIHtcclxuICAgICAgbmdNb2R1bGU6IE5nMlVpQXV0aE1vZHVsZSxcclxuICAgICAgcHJvdmlkZXJzOiBbXHJcbiAgICAgICAgLi4uKGNvbmZpZ09wdGlvbnMgPyBbeyBwcm92aWRlOiBDT05GSUdfT1BUSU9OUywgdXNlVmFsdWU6IGNvbmZpZ09wdGlvbnMgfV0gOiBbXSksXHJcbiAgICAgICAgeyBwcm92aWRlOiBDb25maWdTZXJ2aWNlLCB1c2VDbGFzczogQ29uZmlnU2VydmljZSwgZGVwczogW0NPTkZJR19PUFRJT05TXSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogU3RvcmFnZVNlcnZpY2UsIHVzZUNsYXNzOiBCcm93c2VyU3RvcmFnZVNlcnZpY2UsIGRlcHM6IFtDb25maWdTZXJ2aWNlXSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogU2hhcmVkU2VydmljZSwgdXNlQ2xhc3M6IFNoYXJlZFNlcnZpY2UsIGRlcHM6IFtTdG9yYWdlU2VydmljZSwgQ29uZmlnU2VydmljZV0gfSxcclxuICAgICAgICB7IHByb3ZpZGU6IExvY2FsU2VydmljZSwgdXNlQ2xhc3M6IExvY2FsU2VydmljZSwgZGVwczogW0h0dHBDbGllbnQsIFNoYXJlZFNlcnZpY2UsIENvbmZpZ1NlcnZpY2VdIH0sXHJcbiAgICAgICAgeyBwcm92aWRlOiBQb3B1cFNlcnZpY2UsIHVzZUNsYXNzOiBQb3B1cFNlcnZpY2UsIGRlcHM6IFtDb25maWdTZXJ2aWNlXSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogT2F1dGhTZXJ2aWNlLCB1c2VDbGFzczogT2F1dGhTZXJ2aWNlLCBkZXBzOiBbSHR0cENsaWVudCwgU2hhcmVkU2VydmljZSwgQ29uZmlnU2VydmljZSwgUG9wdXBTZXJ2aWNlXSB9LFxyXG4gICAgICAgIHsgcHJvdmlkZTogQXV0aFNlcnZpY2UsIHVzZUNsYXNzOiBBdXRoU2VydmljZSwgZGVwczogW1NoYXJlZFNlcnZpY2UsIExvY2FsU2VydmljZSwgT2F1dGhTZXJ2aWNlXSB9LFxyXG4gICAgICAgIC4uLihkZWZhdWx0Snd0SW50ZXJjZXB0b3JcclxuICAgICAgICAgID8gW3sgcHJvdmlkZTogSFRUUF9JTlRFUkNFUFRPUlMsIHVzZUNsYXNzOiBKd3RJbnRlcmNlcHRvciwgbXVsdGk6IHRydWUsIGRlcHM6IFtTaGFyZWRTZXJ2aWNlLCBDb25maWdTZXJ2aWNlXSB9XVxyXG4gICAgICAgICAgOiBbXSlcclxuICAgICAgXVxyXG4gICAgfTtcclxuICB9XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm5/lib/oauth-service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | /** 6 | * @record 7 | */ 8 | export function IOauthService() { } 9 | if (false) { 10 | /** 11 | * @template T 12 | * @param {?} options 13 | * @param {?} userData 14 | * @return {?} 15 | */ 16 | IOauthService.prototype.open = function (options, userData) { }; 17 | } 18 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGgtc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi11aS1hdXRoLyIsInNvdXJjZXMiOlsibGliL29hdXRoLXNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7OztBQUdBLG1DQUVDOzs7Ozs7OztJQURDLGdFQUEyRyIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IElPYXV0aDJPcHRpb25zLCBJT2F1dGgxT3B0aW9ucyB9IGZyb20gJy4vY29uZmlnLWludGVyZmFjZXMnO1xyXG5pbXBvcnQgeyBPYnNlcnZhYmxlIH0gZnJvbSAncnhqcyc7XHJcblxyXG5leHBvcnQgaW50ZXJmYWNlIElPYXV0aFNlcnZpY2Uge1xyXG4gIG9wZW48VCBleHRlbmRzIG9iamVjdCB8IHN0cmluZz4ob3B0aW9uczogSU9hdXRoMk9wdGlvbnMgfCBJT2F1dGgxT3B0aW9ucywgdXNlckRhdGE6IG9iamVjdCk6IE9ic2VydmFibGU8VD47XHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm5/lib/oauth.service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | import * as tslib_1 from "tslib"; 6 | import { Injectable, Injector } from '@angular/core'; 7 | import { joinUrl } from './utils'; 8 | import { tap } from 'rxjs/operators'; 9 | import { Oauth1Service } from './oauth1.service'; 10 | import { Oauth2Service } from './oauth2.service'; 11 | import { PopupService } from './popup.service'; 12 | import { ConfigService } from './config.service'; 13 | import { SharedService } from './shared.service'; 14 | import { HttpClient } from '@angular/common/http'; 15 | var OauthService = /** @class */ (function () { 16 | function OauthService(http, shared, config, popup) { 17 | this.http = http; 18 | this.shared = shared; 19 | this.config = config; 20 | this.popup = popup; 21 | this.depProviders = [ 22 | { provide: HttpClient, useValue: this.http }, 23 | { provide: PopupService, useValue: this.popup }, 24 | { provide: ConfigService, useValue: this.config } 25 | ]; 26 | this.deps = [HttpClient, PopupService, ConfigService]; 27 | } 28 | /** 29 | * @template T 30 | * @param {?} name 31 | * @param {?=} userData 32 | * @return {?} 33 | */ 34 | OauthService.prototype.authenticate = /** 35 | * @template T 36 | * @param {?} name 37 | * @param {?=} userData 38 | * @return {?} 39 | */ 40 | function (name, userData) { 41 | var _this = this; 42 | /** @type {?} */ 43 | var provider = this.config.options.providers[name].oauthType === '1.0' 44 | ? Injector.create(tslib_1.__spread(this.depProviders, [{ provide: Oauth1Service, deps: this.deps }])).get(Oauth1Service) 45 | : Injector.create(tslib_1.__spread(this.depProviders, [{ provide: Oauth2Service, deps: this.deps }])).get(Oauth2Service); 46 | return provider.open(this.config.options.providers[name], userData || {}).pipe(tap((/** 47 | * @param {?} response 48 | * @return {?} 49 | */ 50 | function (response) { 51 | // this is for a scenario when someone wishes to opt out from 52 | // satellizer's magic by doing authorization code exchange and 53 | // saving a token manually. 54 | if (_this.config.options.providers[name].url) { 55 | _this.shared.setToken(response); 56 | } 57 | }))); 58 | }; 59 | /** 60 | * @template T 61 | * @param {?} provider 62 | * @param {?=} url 63 | * @param {?=} method 64 | * @return {?} 65 | */ 66 | OauthService.prototype.unlink = /** 67 | * @template T 68 | * @param {?} provider 69 | * @param {?=} url 70 | * @param {?=} method 71 | * @return {?} 72 | */ 73 | function (provider, url, method) { 74 | if (url === void 0) { url = joinUrl(this.config.options.baseUrl, this.config.options.unlinkUrl); } 75 | if (method === void 0) { method = 'POST'; } 76 | return this.http.request(method, url, { body: { provider: provider } }); 77 | }; 78 | OauthService.decorators = [ 79 | { type: Injectable } 80 | ]; 81 | /** @nocollapse */ 82 | OauthService.ctorParameters = function () { return [ 83 | { type: HttpClient }, 84 | { type: SharedService }, 85 | { type: ConfigService }, 86 | { type: PopupService } 87 | ]; }; 88 | return OauthService; 89 | }()); 90 | export { OauthService }; 91 | if (false) { 92 | /** @type {?} */ 93 | OauthService.prototype.depProviders; 94 | /** @type {?} */ 95 | OauthService.prototype.deps; 96 | /** 97 | * @type {?} 98 | * @private 99 | */ 100 | OauthService.prototype.http; 101 | /** 102 | * @type {?} 103 | * @private 104 | */ 105 | OauthService.prototype.shared; 106 | /** 107 | * @type {?} 108 | * @private 109 | */ 110 | OauthService.prototype.config; 111 | /** 112 | * @type {?} 113 | * @private 114 | */ 115 | OauthService.prototype.popup; 116 | } 117 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoib2F1dGguc2VydmljZS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi11aS1hdXRoLyIsInNvdXJjZXMiOlsibGliL29hdXRoLnNlcnZpY2UudHMiXSwibmFtZXMiOltdLCJtYXBwaW5ncyI6Ijs7Ozs7QUFBQSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxNQUFNLGVBQWUsQ0FBQztBQUNyRCxPQUFPLEVBQUUsT0FBTyxFQUFFLE1BQU0sU0FBUyxDQUFDO0FBQ2xDLE9BQU8sRUFBRSxHQUFHLEVBQUUsTUFBTSxnQkFBZ0IsQ0FBQztBQUNyQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBRWpELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxpQkFBaUIsQ0FBQztBQUMvQyxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sa0JBQWtCLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLGtCQUFrQixDQUFDO0FBQ2pELE9BQU8sRUFBRSxVQUFVLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUdsRDtJQVNFLHNCQUFvQixJQUFnQixFQUFVLE1BQXFCLEVBQVUsTUFBcUIsRUFBVSxLQUFtQjtRQUEzRyxTQUFJLEdBQUosSUFBSSxDQUFZO1FBQVUsV0FBTSxHQUFOLE1BQU0sQ0FBZTtRQUFVLFdBQU0sR0FBTixNQUFNLENBQWU7UUFBVSxVQUFLLEdBQUwsS0FBSyxDQUFjO1FBUHRILGlCQUFZLEdBQUc7WUFDdEIsRUFBRSxPQUFPLEVBQUUsVUFBVSxFQUFFLFFBQVEsRUFBRSxJQUFJLENBQUMsSUFBSSxFQUFFO1lBQzVDLEVBQUUsT0FBTyxFQUFFLFlBQVksRUFBRSxRQUFRLEVBQUUsSUFBSSxDQUFDLEtBQUssRUFBRTtZQUMvQyxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsUUFBUSxFQUFFLElBQUksQ0FBQyxNQUFNLEVBQUU7U0FDbEQsQ0FBQztRQUNPLFNBQUksR0FBRyxDQUFDLFVBQVUsRUFBRSxZQUFZLEVBQUUsYUFBYSxDQUFDLENBQUM7SUFFd0UsQ0FBQzs7Ozs7OztJQUU1SCxtQ0FBWTs7Ozs7O0lBQW5CLFVBQStDLElBQVksRUFBRSxRQUFjO1FBQTNFLGlCQWdCQzs7WUFmTyxRQUFRLEdBQ1osSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDLElBQUksQ0FBQyxDQUFDLFNBQVMsS0FBSyxLQUFLO1lBQ3JELENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxrQkFBSyxJQUFJLENBQUMsWUFBWSxHQUFFLEVBQUUsT0FBTyxFQUFFLGFBQWEsRUFBRSxJQUFJLEVBQUUsSUFBSSxDQUFDLElBQUksRUFBRSxHQUFFLENBQUMsR0FBRyxDQUFDLGFBQWEsQ0FBQztZQUN6RyxDQUFDLENBQUMsUUFBUSxDQUFDLE1BQU0sa0JBQUssSUFBSSxDQUFDLFlBQVksR0FBRSxFQUFFLE9BQU8sRUFBRSxhQUFhLEVBQUUsSUFBSSxFQUFFLElBQUksQ0FBQyxJQUFJLEVBQUUsR0FBRSxDQUFDLEdBQUcsQ0FBQyxhQUFhLENBQUM7UUFFN0csT0FBTyxRQUFRLENBQUMsSUFBSSxDQUFJLElBQUksQ0FBQyxNQUFNLENBQUMsT0FBTyxDQUFDLFNBQVMsQ0FBQyxJQUFJLENBQUMsRUFBRSxRQUFRLElBQUksRUFBRSxDQUFDLENBQUMsSUFBSSxDQUMvRSxHQUFHOzs7O1FBQUMsVUFBQSxRQUFRO1lBQ1YsNkRBQTZEO1lBQzdELDhEQUE4RDtZQUM5RCwyQkFBMkI7WUFDM0IsSUFBSSxLQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxTQUFTLENBQUMsSUFBSSxDQUFDLENBQUMsR0FBRyxFQUFFO2dCQUMzQyxLQUFJLENBQUMsTUFBTSxDQUFDLFFBQVEsQ0FBQyxRQUFRLENBQUMsQ0FBQzthQUNoQztRQUNILENBQUMsRUFBQyxDQUNILENBQUM7SUFDSixDQUFDOzs7Ozs7OztJQUVNLDZCQUFNOzs7Ozs7O0lBQWIsVUFBaUIsUUFBZ0IsRUFBRSxHQUF5RSxFQUFFLE1BQWU7UUFBMUYsb0JBQUEsRUFBQSxNQUFNLE9BQU8sQ0FBQyxJQUFJLENBQUMsTUFBTSxDQUFDLE9BQU8sQ0FBQyxPQUFPLEVBQUUsSUFBSSxDQUFDLE1BQU0sQ0FBQyxPQUFPLENBQUMsU0FBUyxDQUFDO1FBQUUsdUJBQUEsRUFBQSxlQUFlO1FBQzNILE9BQU8sSUFBSSxDQUFDLElBQUksQ0FBQyxPQUFPLENBQUksTUFBTSxFQUFFLEdBQUcsRUFBRSxFQUFFLElBQUksRUFBRSxFQUFFLFFBQVEsVUFBQSxFQUFFLEVBQUUsQ0FBQyxDQUFDO0lBQ25FLENBQUM7O2dCQS9CRixVQUFVOzs7O2dCQUhGLFVBQVU7Z0JBRFYsYUFBYTtnQkFEYixhQUFhO2dCQURiLFlBQVk7O0lBc0NyQixtQkFBQztDQUFBLEFBaENELElBZ0NDO1NBL0JZLFlBQVk7OztJQUN2QixvQ0FJRTs7SUFDRiw0QkFBMEQ7Ozs7O0lBRTlDLDRCQUF3Qjs7Ozs7SUFBRSw4QkFBNkI7Ozs7O0lBQUUsOEJBQTZCOzs7OztJQUFFLDZCQUEyQiIsInNvdXJjZXNDb250ZW50IjpbImltcG9ydCB7IEluamVjdGFibGUsIEluamVjdG9yIH0gZnJvbSAnQGFuZ3VsYXIvY29yZSc7XHJcbmltcG9ydCB7IGpvaW5VcmwgfSBmcm9tICcuL3V0aWxzJztcclxuaW1wb3J0IHsgdGFwIH0gZnJvbSAncnhqcy9vcGVyYXRvcnMnO1xyXG5pbXBvcnQgeyBPYXV0aDFTZXJ2aWNlIH0gZnJvbSAnLi9vYXV0aDEuc2VydmljZSc7XHJcbmltcG9ydCB7IE9hdXRoMlNlcnZpY2UgfSBmcm9tICcuL29hdXRoMi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2JzZXJ2YWJsZSB9IGZyb20gJ3J4anMnO1xyXG5pbXBvcnQgeyBQb3B1cFNlcnZpY2UgfSBmcm9tICcuL3BvcHVwLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlIH0gZnJvbSAnLi9jb25maWcuc2VydmljZSc7XHJcbmltcG9ydCB7IFNoYXJlZFNlcnZpY2UgfSBmcm9tICcuL3NoYXJlZC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSHR0cENsaWVudCB9IGZyb20gJ0Bhbmd1bGFyL2NvbW1vbi9odHRwJztcclxuaW1wb3J0IHsgSU9hdXRoU2VydmljZSB9IGZyb20gJy4vb2F1dGgtc2VydmljZSc7XHJcblxyXG5ASW5qZWN0YWJsZSgpXHJcbmV4cG9ydCBjbGFzcyBPYXV0aFNlcnZpY2Uge1xyXG4gIHJlYWRvbmx5IGRlcFByb3ZpZGVycyA9IFtcclxuICAgIHsgcHJvdmlkZTogSHR0cENsaWVudCwgdXNlVmFsdWU6IHRoaXMuaHR0cCB9LFxyXG4gICAgeyBwcm92aWRlOiBQb3B1cFNlcnZpY2UsIHVzZVZhbHVlOiB0aGlzLnBvcHVwIH0sXHJcbiAgICB7IHByb3ZpZGU6IENvbmZpZ1NlcnZpY2UsIHVzZVZhbHVlOiB0aGlzLmNvbmZpZyB9XHJcbiAgXTtcclxuICByZWFkb25seSBkZXBzID0gW0h0dHBDbGllbnQsIFBvcHVwU2VydmljZSwgQ29uZmlnU2VydmljZV07XHJcblxyXG4gIGNvbnN0cnVjdG9yKHByaXZhdGUgaHR0cDogSHR0cENsaWVudCwgcHJpdmF0ZSBzaGFyZWQ6IFNoYXJlZFNlcnZpY2UsIHByaXZhdGUgY29uZmlnOiBDb25maWdTZXJ2aWNlLCBwcml2YXRlIHBvcHVwOiBQb3B1cFNlcnZpY2UpIHt9XHJcblxyXG4gIHB1YmxpYyBhdXRoZW50aWNhdGU8VCBleHRlbmRzIG9iamVjdCB8IHN0cmluZz4obmFtZTogc3RyaW5nLCB1c2VyRGF0YT86IGFueSk6IE9ic2VydmFibGU8VD4ge1xyXG4gICAgY29uc3QgcHJvdmlkZXI6IElPYXV0aFNlcnZpY2UgPVxyXG4gICAgICB0aGlzLmNvbmZpZy5vcHRpb25zLnByb3ZpZGVyc1tuYW1lXS5vYXV0aFR5cGUgPT09ICcxLjAnXHJcbiAgICAgICAgPyBJbmplY3Rvci5jcmVhdGUoWy4uLnRoaXMuZGVwUHJvdmlkZXJzLCB7IHByb3ZpZGU6IE9hdXRoMVNlcnZpY2UsIGRlcHM6IHRoaXMuZGVwcyB9XSkuZ2V0KE9hdXRoMVNlcnZpY2UpXHJcbiAgICAgICAgOiBJbmplY3Rvci5jcmVhdGUoWy4uLnRoaXMuZGVwUHJvdmlkZXJzLCB7IHByb3ZpZGU6IE9hdXRoMlNlcnZpY2UsIGRlcHM6IHRoaXMuZGVwcyB9XSkuZ2V0KE9hdXRoMlNlcnZpY2UpO1xyXG5cclxuICAgIHJldHVybiBwcm92aWRlci5vcGVuPFQ+KHRoaXMuY29uZmlnLm9wdGlvbnMucHJvdmlkZXJzW25hbWVdLCB1c2VyRGF0YSB8fCB7fSkucGlwZShcclxuICAgICAgdGFwKHJlc3BvbnNlID0+IHtcclxuICAgICAgICAvLyB0aGlzIGlzIGZvciBhIHNjZW5hcmlvIHdoZW4gc29tZW9uZSB3aXNoZXMgdG8gb3B0IG91dCBmcm9tXHJcbiAgICAgICAgLy8gc2F0ZWxsaXplcidzIG1hZ2ljIGJ5IGRvaW5nIGF1dGhvcml6YXRpb24gY29kZSBleGNoYW5nZSBhbmRcclxuICAgICAgICAvLyBzYXZpbmcgYSB0b2tlbiBtYW51YWxseS5cclxuICAgICAgICBpZiAodGhpcy5jb25maWcub3B0aW9ucy5wcm92aWRlcnNbbmFtZV0udXJsKSB7XHJcbiAgICAgICAgICB0aGlzLnNoYXJlZC5zZXRUb2tlbihyZXNwb25zZSk7XHJcbiAgICAgICAgfVxyXG4gICAgICB9KVxyXG4gICAgKTtcclxuICB9XHJcblxyXG4gIHB1YmxpYyB1bmxpbms8VD4ocHJvdmlkZXI6IHN0cmluZywgdXJsID0gam9pblVybCh0aGlzLmNvbmZpZy5vcHRpb25zLmJhc2VVcmwsIHRoaXMuY29uZmlnLm9wdGlvbnMudW5saW5rVXJsKSwgbWV0aG9kID0gJ1BPU1QnKSB7XHJcbiAgICByZXR1cm4gdGhpcy5odHRwLnJlcXVlc3Q8VD4obWV0aG9kLCB1cmwsIHsgYm9keTogeyBwcm92aWRlciB9IH0pO1xyXG4gIH1cclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm5/lib/storage-service.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | /** 6 | * @abstract 7 | */ 8 | var /** 9 | * @abstract 10 | */ 11 | StorageService = /** @class */ (function () { 12 | function StorageService() { 13 | } 14 | return StorageService; 15 | }()); 16 | /** 17 | * @abstract 18 | */ 19 | export { StorageService }; 20 | if (false) { 21 | /** 22 | * @abstract 23 | * @param {?} storageType 24 | * @return {?} 25 | */ 26 | StorageService.prototype.updateStorageType = function (storageType) { }; 27 | /** 28 | * @abstract 29 | * @param {?} key 30 | * @return {?} 31 | */ 32 | StorageService.prototype.get = function (key) { }; 33 | /** 34 | * @abstract 35 | * @param {?} key 36 | * @param {?} value 37 | * @param {?} date 38 | * @return {?} 39 | */ 40 | StorageService.prototype.set = function (key, value, date) { }; 41 | /** 42 | * @abstract 43 | * @param {?} key 44 | * @return {?} 45 | */ 46 | StorageService.prototype.remove = function (key) { }; 47 | } 48 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS1zZXJ2aWNlLmpzIiwic291cmNlUm9vdCI6Im5nOi8vbmcyLXVpLWF1dGgvIiwic291cmNlcyI6WyJsaWIvc3RvcmFnZS1zZXJ2aWNlLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFFQTs7OztJQUFBO0lBUUEsQ0FBQztJQUFELHFCQUFDO0FBQUQsQ0FBQyxBQVJELElBUUM7Ozs7Ozs7Ozs7O0lBUEMsd0VBQThEOzs7Ozs7SUFFOUQsa0RBQWtDOzs7Ozs7OztJQUVsQywrREFBNkQ7Ozs7OztJQUU3RCxxREFBbUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBTdG9yYWdlVHlwZSB9IGZyb20gJy4vc3RvcmFnZS10eXBlLmVudW0nO1xyXG5cclxuZXhwb3J0IGFic3RyYWN0IGNsYXNzIFN0b3JhZ2VTZXJ2aWNlIHtcclxuICBhYnN0cmFjdCB1cGRhdGVTdG9yYWdlVHlwZShzdG9yYWdlVHlwZTogU3RvcmFnZVR5cGUpOiBib29sZWFuO1xyXG5cclxuICBhYnN0cmFjdCBnZXQoa2V5OiBzdHJpbmcpOiBzdHJpbmc7XHJcblxyXG4gIGFic3RyYWN0IHNldChrZXk6IHN0cmluZywgdmFsdWU6IHN0cmluZywgZGF0ZTogc3RyaW5nKTogdm9pZDtcclxuXHJcbiAgYWJzdHJhY3QgcmVtb3ZlKGtleTogc3RyaW5nKTogdm9pZDtcclxufVxyXG4iXX0= -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm5/lib/storage-type.enum.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | /** @enum {string} */ 6 | var StorageType = { 7 | NONE: 'none', 8 | MEMORY: 'memory', 9 | LOCAL_STORAGE: 'localStorage', 10 | SESSION_STORAGE: 'sessionStorage', 11 | COOKIE: 'cookie', 12 | SESSION_COOKIE: 'sessionCookie', 13 | }; 14 | export { StorageType }; 15 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoic3RvcmFnZS10eXBlLmVudW0uanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZzItdWktYXV0aC8iLCJzb3VyY2VzIjpbImxpYi9zdG9yYWdlLXR5cGUuZW51bS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7SUFDRSxNQUFPLE1BQU07SUFDYixRQUFTLFFBQVE7SUFDakIsZUFBZ0IsY0FBYztJQUM5QixpQkFBa0IsZ0JBQWdCO0lBQ2xDLFFBQVMsUUFBUTtJQUNqQixnQkFBaUIsZUFBZSIsInNvdXJjZXNDb250ZW50IjpbImV4cG9ydCBlbnVtIFN0b3JhZ2VUeXBlIHtcclxuICBOT05FID0gJ25vbmUnLFxyXG4gIE1FTU9SWSA9ICdtZW1vcnknLFxyXG4gIExPQ0FMX1NUT1JBR0UgPSAnbG9jYWxTdG9yYWdlJyxcclxuICBTRVNTSU9OX1NUT1JBR0UgPSAnc2Vzc2lvblN0b3JhZ2UnLFxyXG4gIENPT0tJRSA9ICdjb29raWUnLFxyXG4gIFNFU1NJT05fQ09PS0lFID0gJ3Nlc3Npb25Db29raWUnXHJcbn1cclxuIl19 -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm5/lib/utils.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | /** 6 | * Created by Ron on 17/12/2015. 7 | * @param {?} baseUrl 8 | * @param {?} url 9 | * @return {?} 10 | */ 11 | export function joinUrl(baseUrl, url) { 12 | if (/^(?:[a-z]+:)?\/\//i.test(url)) { 13 | return url; 14 | } 15 | /** @type {?} */ 16 | var joined = [baseUrl, url].join('/'); 17 | return joined 18 | .replace(/[\/]+/g, '/') 19 | .replace(/\/\?/g, '?') 20 | .replace(/\/\#/g, '#') 21 | .replace(/\:\//g, '://'); 22 | } 23 | /** 24 | * @param {?} obj 25 | * @return {?} 26 | */ 27 | export function buildQueryString(obj) { 28 | return Object.keys(obj) 29 | .map((/** 30 | * @param {?} key 31 | * @return {?} 32 | */ 33 | function (key) { return (!!obj[key] ? encodeURIComponent(key) + "=" + encodeURIComponent(obj[key]) : key); })) 34 | .join('&'); 35 | } 36 | /** 37 | * @param {?=} w 38 | * @return {?} 39 | */ 40 | export function getWindowOrigin(w) { 41 | if (!w && typeof window !== 'undefined') { 42 | w = window; 43 | } 44 | try { 45 | if (!w || !w.location) { 46 | return null; 47 | } 48 | if (!w.location.origin) { 49 | return w.location.protocol + "//" + w.location.hostname + (w.location.port ? ':' + w.location.port : ''); 50 | } 51 | return w.location.origin; 52 | } 53 | catch (error) { 54 | return null; 55 | // ignore DOMException: Blocked a frame with origin from accessing a cross-origin frame. 56 | // error instanceof DOMException && error.name === 'SecurityError' 57 | } 58 | } 59 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoidXRpbHMuanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZzItdWktYXV0aC8iLCJzb3VyY2VzIjpbImxpYi91dGlscy50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7Ozs7Ozs7O0FBTUEsTUFBTSxVQUFVLE9BQU8sQ0FBQyxPQUFlLEVBQUUsR0FBVztJQUNsRCxJQUFJLG9CQUFvQixDQUFDLElBQUksQ0FBQyxHQUFHLENBQUMsRUFBRTtRQUNsQyxPQUFPLEdBQUcsQ0FBQztLQUNaOztRQUVLLE1BQU0sR0FBRyxDQUFDLE9BQU8sRUFBRSxHQUFHLENBQUMsQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO0lBRXZDLE9BQU8sTUFBTTtTQUNWLE9BQU8sQ0FBQyxRQUFRLEVBQUUsR0FBRyxDQUFDO1NBQ3RCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsR0FBRyxDQUFDO1NBQ3JCLE9BQU8sQ0FBQyxPQUFPLEVBQUUsS0FBSyxDQUFDLENBQUM7QUFDN0IsQ0FBQzs7Ozs7QUFFRCxNQUFNLFVBQVUsZ0JBQWdCLENBQUMsR0FBVztJQUMxQyxPQUFPLE1BQU0sQ0FBQyxJQUFJLENBQUMsR0FBRyxDQUFDO1NBQ3BCLEdBQUc7Ozs7SUFBQyxVQUFBLEdBQUcsSUFBSSxPQUFBLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxHQUFHLENBQUMsQ0FBQyxDQUFDLENBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLFNBQUksa0JBQWtCLENBQUMsR0FBRyxDQUFDLEdBQUcsQ0FBQyxDQUFHLENBQUMsQ0FBQyxDQUFDLEdBQUcsQ0FBQyxFQUFqRixDQUFpRixFQUFDO1NBQzdGLElBQUksQ0FBQyxHQUFHLENBQUMsQ0FBQztBQUNmLENBQUM7Ozs7O0FBRUQsTUFBTSxVQUFVLGVBQWUsQ0FBQyxDQUFVO0lBQ3hDLElBQUksQ0FBQyxDQUFDLElBQUksT0FBTyxNQUFNLEtBQUssV0FBVyxFQUFFO1FBQ3ZDLENBQUMsR0FBRyxNQUFNLENBQUM7S0FDWjtJQUNELElBQUk7UUFDRixJQUFJLENBQUMsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLFFBQVEsRUFBRTtZQUNyQixPQUFPLElBQUksQ0FBQztTQUNiO1FBQ0QsSUFBSSxDQUFDLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxFQUFFO1lBQ3RCLE9BQVUsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLFVBQUssQ0FBQyxDQUFDLFFBQVEsQ0FBQyxRQUFRLElBQUcsQ0FBQyxDQUFDLFFBQVEsQ0FBQyxJQUFJLENBQUMsQ0FBQyxDQUFDLEdBQUcsR0FBRyxDQUFDLENBQUMsUUFBUSxDQUFDLElBQUksQ0FBQyxDQUFDLENBQUMsRUFBRSxDQUFFLENBQUM7U0FDeEc7UUFDRCxPQUFPLENBQUMsQ0FBQyxRQUFRLENBQUMsTUFBTSxDQUFDO0tBQzFCO0lBQUMsT0FBTyxLQUFLLEVBQUU7UUFDZCxPQUFPLElBQUksQ0FBQztRQUNaLHdGQUF3RjtRQUN4RixrRUFBa0U7S0FDbkU7QUFDSCxDQUFDIiwic291cmNlc0NvbnRlbnQiOlsiaW1wb3J0IHsgSHR0cEhlYWRlcnMsIEh0dHBQYXJhbXMgfSBmcm9tICdAYW5ndWxhci9jb21tb24vaHR0cCc7XHJcblxyXG4vKipcclxuICogQ3JlYXRlZCBieSBSb24gb24gMTcvMTIvMjAxNS5cclxuICovXHJcblxyXG5leHBvcnQgZnVuY3Rpb24gam9pblVybChiYXNlVXJsOiBzdHJpbmcsIHVybDogc3RyaW5nKSB7XHJcbiAgaWYgKC9eKD86W2Etel0rOik/XFwvXFwvL2kudGVzdCh1cmwpKSB7XHJcbiAgICByZXR1cm4gdXJsO1xyXG4gIH1cclxuXHJcbiAgY29uc3Qgam9pbmVkID0gW2Jhc2VVcmwsIHVybF0uam9pbignLycpO1xyXG5cclxuICByZXR1cm4gam9pbmVkXHJcbiAgICAucmVwbGFjZSgvW1xcL10rL2csICcvJylcclxuICAgIC5yZXBsYWNlKC9cXC9cXD8vZywgJz8nKVxyXG4gICAgLnJlcGxhY2UoL1xcL1xcIy9nLCAnIycpXHJcbiAgICAucmVwbGFjZSgvXFw6XFwvL2csICc6Ly8nKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGJ1aWxkUXVlcnlTdHJpbmcob2JqOiBvYmplY3QpIHtcclxuICByZXR1cm4gT2JqZWN0LmtleXMob2JqKVxyXG4gICAgLm1hcChrZXkgPT4gKCEhb2JqW2tleV0gPyBgJHtlbmNvZGVVUklDb21wb25lbnQoa2V5KX09JHtlbmNvZGVVUklDb21wb25lbnQob2JqW2tleV0pfWAgOiBrZXkpKVxyXG4gICAgLmpvaW4oJyYnKTtcclxufVxyXG5cclxuZXhwb3J0IGZ1bmN0aW9uIGdldFdpbmRvd09yaWdpbih3PzogV2luZG93KSB7XHJcbiAgaWYgKCF3ICYmIHR5cGVvZiB3aW5kb3cgIT09ICd1bmRlZmluZWQnKSB7XHJcbiAgICB3ID0gd2luZG93O1xyXG4gIH1cclxuICB0cnkge1xyXG4gICAgaWYgKCF3IHx8ICF3LmxvY2F0aW9uKSB7XHJcbiAgICAgIHJldHVybiBudWxsO1xyXG4gICAgfVxyXG4gICAgaWYgKCF3LmxvY2F0aW9uLm9yaWdpbikge1xyXG4gICAgICByZXR1cm4gYCR7dy5sb2NhdGlvbi5wcm90b2NvbH0vLyR7dy5sb2NhdGlvbi5ob3N0bmFtZX0ke3cubG9jYXRpb24ucG9ydCA/ICc6JyArIHcubG9jYXRpb24ucG9ydCA6ICcnfWA7XHJcbiAgICB9XHJcbiAgICByZXR1cm4gdy5sb2NhdGlvbi5vcmlnaW47XHJcbiAgfSBjYXRjaCAoZXJyb3IpIHtcclxuICAgIHJldHVybiBudWxsO1xyXG4gICAgLy8gaWdub3JlIERPTUV4Y2VwdGlvbjogQmxvY2tlZCBhIGZyYW1lIHdpdGggb3JpZ2luIGZyb20gYWNjZXNzaW5nIGEgY3Jvc3Mtb3JpZ2luIGZyYW1lLlxyXG4gICAgLy8gZXJyb3IgaW5zdGFuY2VvZiBET01FeGNlcHRpb24gJiYgZXJyb3IubmFtZSA9PT0gJ1NlY3VyaXR5RXJyb3InXHJcbiAgfVxyXG59XHJcbiJdfQ== -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm5/ng2-ui-auth.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | /** 6 | * Generated bundle index. Do not edit. 7 | */ 8 | export { Ng2UiAuthModule, LocalService, Oauth2Service, Oauth1Service, PopupService, OauthService, SharedService, StorageService, BrowserStorageService, AuthService, ConfigService, JwtInterceptor, CONFIG_OPTIONS, StorageType } from './public_api'; 9 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoibmcyLXVpLWF1dGguanMiLCJzb3VyY2VSb290Ijoibmc6Ly9uZzItdWktYXV0aC8iLCJzb3VyY2VzIjpbIm5nMi11aS1hdXRoLnRzIl0sIm5hbWVzIjpbXSwibWFwcGluZ3MiOiI7Ozs7Ozs7QUFJQSx1T0FBYyxjQUFjLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyIvKipcbiAqIEdlbmVyYXRlZCBidW5kbGUgaW5kZXguIERvIG5vdCBlZGl0LlxuICovXG5cbmV4cG9ydCAqIGZyb20gJy4vcHVibGljX2FwaSc7XG5cbmV4cG9ydCB7SVBhcnRpYWxDb25maWdPcHRpb25zIGFzIMm1YX0gZnJvbSAnLi9saWIvY29uZmlnLWludGVyZmFjZXMnOyJdfQ== -------------------------------------------------------------------------------- /dist/ng2-ui-auth/esm5/public_api.js: -------------------------------------------------------------------------------- 1 | /** 2 | * @fileoverview added by tsickle 3 | * @suppress {checkTypes,constantProperty,extraRequire,missingOverride,missingReturn,unusedPrivateMembers,uselessCode} checked by tsc 4 | */ 5 | import { Ng2UiAuthModule } from './lib/ng2-ui-auth.module'; 6 | import { LocalService } from './lib/local.service'; 7 | import { Oauth2Service } from './lib/oauth2.service'; 8 | import { Oauth1Service } from './lib/oauth1.service'; 9 | import { PopupService } from './lib/popup.service'; 10 | import { OauthService } from './lib/oauth.service'; 11 | import { SharedService } from './lib/shared.service'; 12 | import { StorageService } from './lib/storage-service'; 13 | import { BrowserStorageService } from './lib/browser-storage.service'; 14 | import { AuthService } from './lib/auth.service'; 15 | import { ConfigService, CONFIG_OPTIONS } from './lib/config.service'; 16 | import { JwtInterceptor } from './lib/interceptor.service'; 17 | import { StorageType } from './lib/storage-type.enum'; 18 | /* 19 | * Public API Surface of ng2-ui-auth 20 | */ 21 | export { Ng2UiAuthModule, LocalService, Oauth2Service, Oauth1Service, PopupService, OauthService, SharedService, StorageService, BrowserStorageService, AuthService, ConfigService, JwtInterceptor, CONFIG_OPTIONS, StorageType }; 22 | //# sourceMappingURL=data:application/json;base64,eyJ2ZXJzaW9uIjozLCJmaWxlIjoicHVibGljX2FwaS5qcyIsInNvdXJjZVJvb3QiOiJuZzovL25nMi11aS1hdXRoLyIsInNvdXJjZXMiOlsicHVibGljX2FwaS50cyJdLCJuYW1lcyI6W10sIm1hcHBpbmdzIjoiOzs7O0FBQUEsT0FBTyxFQUFFLGVBQWUsRUFBRSxNQUFNLDBCQUEwQixDQUFDO0FBQzNELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsYUFBYSxFQUFFLE1BQU0sc0JBQXNCLENBQUM7QUFDckQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxZQUFZLEVBQUUsTUFBTSxxQkFBcUIsQ0FBQztBQUNuRCxPQUFPLEVBQUUsWUFBWSxFQUFFLE1BQU0scUJBQXFCLENBQUM7QUFDbkQsT0FBTyxFQUFFLGFBQWEsRUFBRSxNQUFNLHNCQUFzQixDQUFDO0FBQ3JELE9BQU8sRUFBRSxjQUFjLEVBQUUsTUFBTSx1QkFBdUIsQ0FBQztBQUN2RCxPQUFPLEVBQUUscUJBQXFCLEVBQUUsTUFBTSwrQkFBK0IsQ0FBQztBQUN0RSxPQUFPLEVBQUUsV0FBVyxFQUFFLE1BQU0sb0JBQW9CLENBQUM7QUFDakQsT0FBTyxFQUFFLGFBQWEsRUFBRSxjQUFjLEVBQUUsTUFBTSxzQkFBc0IsQ0FBQztBQUNyRSxPQUFPLEVBQUUsY0FBYyxFQUFFLE1BQU0sMkJBQTJCLENBQUM7QUFFM0QsT0FBTyxFQUFFLFdBQVcsRUFBRSxNQUFNLHlCQUF5QixDQUFDOzs7O0FBS3RELE9BQU8sRUFDTCxlQUFlLEVBQ2YsWUFBWSxFQUNaLGFBQWEsRUFDYixhQUFhLEVBQ2IsWUFBWSxFQUNaLFlBQVksRUFDWixhQUFhLEVBQ2IsY0FBYyxFQUNkLHFCQUFxQixFQUNyQixXQUFXLEVBQ1gsYUFBYSxFQUNiLGNBQWMsRUFDZCxjQUFjLEVBRWQsV0FBVyxFQUNaLENBQUMiLCJzb3VyY2VzQ29udGVudCI6WyJpbXBvcnQgeyBOZzJVaUF1dGhNb2R1bGUgfSBmcm9tICcuL2xpYi9uZzItdWktYXV0aC5tb2R1bGUnO1xyXG5pbXBvcnQgeyBMb2NhbFNlcnZpY2UgfSBmcm9tICcuL2xpYi9sb2NhbC5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2F1dGgyU2VydmljZSB9IGZyb20gJy4vbGliL29hdXRoMi5zZXJ2aWNlJztcclxuaW1wb3J0IHsgT2F1dGgxU2VydmljZSB9IGZyb20gJy4vbGliL29hdXRoMS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgUG9wdXBTZXJ2aWNlIH0gZnJvbSAnLi9saWIvcG9wdXAuc2VydmljZSc7XHJcbmltcG9ydCB7IE9hdXRoU2VydmljZSB9IGZyb20gJy4vbGliL29hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTaGFyZWRTZXJ2aWNlIH0gZnJvbSAnLi9saWIvc2hhcmVkLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbGliL3N0b3JhZ2Utc2VydmljZSc7XHJcbmltcG9ydCB7IEJyb3dzZXJTdG9yYWdlU2VydmljZSB9IGZyb20gJy4vbGliL2Jyb3dzZXItc3RvcmFnZS5zZXJ2aWNlJztcclxuaW1wb3J0IHsgQXV0aFNlcnZpY2UgfSBmcm9tICcuL2xpYi9hdXRoLnNlcnZpY2UnO1xyXG5pbXBvcnQgeyBDb25maWdTZXJ2aWNlLCBDT05GSUdfT1BUSU9OUyB9IGZyb20gJy4vbGliL2NvbmZpZy5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSnd0SW50ZXJjZXB0b3IgfSBmcm9tICcuL2xpYi9pbnRlcmNlcHRvci5zZXJ2aWNlJztcclxuaW1wb3J0IHsgSVByb3ZpZGVycyB9IGZyb20gJy4vbGliL2NvbmZpZy1pbnRlcmZhY2VzJztcclxuaW1wb3J0IHsgU3RvcmFnZVR5cGUgfSBmcm9tICcuL2xpYi9zdG9yYWdlLXR5cGUuZW51bSc7XHJcblxyXG4vKlxyXG4gKiBQdWJsaWMgQVBJIFN1cmZhY2Ugb2YgbmcyLXVpLWF1dGhcclxuICovXHJcbmV4cG9ydCB7XHJcbiAgTmcyVWlBdXRoTW9kdWxlLFxyXG4gIExvY2FsU2VydmljZSxcclxuICBPYXV0aDJTZXJ2aWNlLFxyXG4gIE9hdXRoMVNlcnZpY2UsXHJcbiAgUG9wdXBTZXJ2aWNlLFxyXG4gIE9hdXRoU2VydmljZSxcclxuICBTaGFyZWRTZXJ2aWNlLFxyXG4gIFN0b3JhZ2VTZXJ2aWNlLFxyXG4gIEJyb3dzZXJTdG9yYWdlU2VydmljZSxcclxuICBBdXRoU2VydmljZSxcclxuICBDb25maWdTZXJ2aWNlLFxyXG4gIEp3dEludGVyY2VwdG9yLFxyXG4gIENPTkZJR19PUFRJT05TLFxyXG4gIElQcm92aWRlcnMsXHJcbiAgU3RvcmFnZVR5cGVcclxufTtcclxuIl19 -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/auth.service.d.ts: -------------------------------------------------------------------------------- 1 | import { Observable } from 'rxjs'; 2 | import { LocalService } from './local.service'; 3 | import { OauthService } from './oauth.service'; 4 | import { SharedService } from './shared.service'; 5 | import { StorageType } from './storage-type.enum'; 6 | export declare class AuthService { 7 | private shared; 8 | private local; 9 | private oauth; 10 | constructor(shared: SharedService, local: LocalService, oauth: OauthService); 11 | login(user: string | object, url?: string): Observable; 12 | signup(user: string | object, url?: string): Observable; 13 | logout(): Observable; 14 | authenticate(name: string, userData?: any): Observable; 15 | link(name: string, userData?: any): Observable; 16 | unlink(provider: string, url?: string): Observable; 17 | isAuthenticated(): boolean; 18 | getToken(): string | null; 19 | setToken(token: string | object): void; 20 | removeToken(): void; 21 | getPayload(): any; 22 | setStorageType(type: StorageType): boolean; 23 | getExpirationDate(): Date | null; 24 | } 25 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/browser-storage.service.d.ts: -------------------------------------------------------------------------------- 1 | import { StorageService } from './storage-service'; 2 | import { StorageType } from './storage-type.enum'; 3 | import { ConfigService } from './config.service'; 4 | export declare class BrowserStorageService extends StorageService { 5 | private config; 6 | private store; 7 | private storageType; 8 | constructor(config: ConfigService); 9 | updateStorageType(storageType: StorageType): boolean; 10 | get(key: string): string; 11 | set(key: string, value: string, date: string): void; 12 | remove(key: string): void; 13 | private checkIsStorageAvailable; 14 | private isWindowStorageAvailable; 15 | private isCookieStorageAvailable; 16 | private setCookie; 17 | private removeCookie; 18 | private getCookie; 19 | } 20 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/config-interfaces.d.ts: -------------------------------------------------------------------------------- 1 | import { StorageType } from './storage-type.enum'; 2 | export interface IPopupOptions { 3 | width?: number; 4 | height?: number; 5 | left?: number; 6 | top?: number; 7 | visibleToolbar?: boolean; 8 | } 9 | export interface IOauth1Options { 10 | url?: string; 11 | name?: string; 12 | redirectUri?: string; 13 | popupOptions?: IPopupOptions; 14 | authorizationEndpoint?: string; 15 | oauthType?: '1.0'; 16 | method?: string; 17 | } 18 | export interface IOauth2Options { 19 | url?: string; 20 | name?: string; 21 | redirectUri?: string; 22 | popupOptions?: IPopupOptions; 23 | authorizationEndpoint?: string; 24 | oauthType?: '2.0'; 25 | method?: string; 26 | responseType?: string; 27 | clientId?: string; 28 | additionalUrlParams?: { 29 | [paramName: string]: string | (() => string) | null | undefined; 30 | }; 31 | scopeDelimiter?: string; 32 | scope?: string[]; 33 | state?: string | (() => string); 34 | } 35 | export interface IProviders { 36 | [provider: string]: IOauth2Options | IOauth1Options; 37 | } 38 | export interface IConfigOptions { 39 | tokenRoot: string | null; 40 | cordova: boolean | null; 41 | baseUrl: string; 42 | loginUrl: string; 43 | signupUrl: string; 44 | unlinkUrl: string; 45 | tokenName: string; 46 | tokenSeparator: string; 47 | tokenPrefix: string; 48 | authToken: string; 49 | authHeader: string; 50 | storageType: StorageType; 51 | providers: IProviders; 52 | withCredentials: boolean; 53 | resolveToken: (response: any, config: IConfigOptions) => string; 54 | } 55 | export interface IPartialConfigOptions { 56 | tokenRoot?: string | null; 57 | cordova?: boolean | null; 58 | baseUrl?: string; 59 | loginUrl?: string; 60 | signupUrl?: string; 61 | unlinkUrl?: string; 62 | tokenName?: string; 63 | tokenSeparator?: string; 64 | tokenPrefix?: string; 65 | authToken?: string; 66 | authHeader?: string; 67 | storageType?: StorageType; 68 | providers?: IProviders; 69 | withCredentials?: boolean; 70 | resolveToken?: (response: any, config: IConfigOptions) => string; 71 | } 72 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/config-providers.d.ts: -------------------------------------------------------------------------------- 1 | import { IProviders } from '../public_api'; 2 | export declare const defaultProviders: IProviders; 3 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/config.service.d.ts: -------------------------------------------------------------------------------- 1 | import { InjectionToken } from '@angular/core'; 2 | import { IConfigOptions, IPartialConfigOptions, IProviders } from './config-interfaces'; 3 | import { StorageType } from './storage-type.enum'; 4 | export declare const CONFIG_OPTIONS: InjectionToken; 5 | export declare class ConfigService { 6 | options: { 7 | withCredentials: boolean; 8 | tokenRoot: any; 9 | baseUrl: string; 10 | loginUrl: string; 11 | signupUrl: string; 12 | unlinkUrl: string; 13 | tokenName: string; 14 | tokenSeparator: string; 15 | tokenPrefix: string; 16 | authHeader: string; 17 | authToken: string; 18 | storageType: StorageType; 19 | cordova: any; 20 | resolveToken: (response: any, config: IConfigOptions) => any; 21 | providers: {}; 22 | }; 23 | constructor(options: IPartialConfigOptions); 24 | updateProviders(providers: IProviders): void; 25 | mergeWithDefaultProviders(): void; 26 | } 27 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/interceptor.service.d.ts: -------------------------------------------------------------------------------- 1 | import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http'; 2 | import { SharedService } from './shared.service'; 3 | import { ConfigService } from './config.service'; 4 | import { Observable } from 'rxjs'; 5 | export declare class JwtInterceptor implements HttpInterceptor { 6 | private shared; 7 | private config; 8 | constructor(shared: SharedService, config: ConfigService); 9 | intercept(req: HttpRequest, next: HttpHandler): Observable>; 10 | } 11 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/local.service.d.ts: -------------------------------------------------------------------------------- 1 | import { HttpClient } from '@angular/common/http'; 2 | import { SharedService } from './shared.service'; 3 | import { ConfigService } from './config.service'; 4 | import { Observable } from 'rxjs'; 5 | export declare class LocalService { 6 | private http; 7 | private shared; 8 | private config; 9 | constructor(http: HttpClient, shared: SharedService, config: ConfigService); 10 | login(user: string | object, url?: string): Observable; 11 | signup(user: string | object, url?: string): Observable; 12 | } 13 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/ng2-ui-auth.module.d.ts: -------------------------------------------------------------------------------- 1 | import { ModuleWithProviders } from '@angular/core'; 2 | import { IPartialConfigOptions } from './config-interfaces'; 3 | export declare class Ng2UiAuthModule { 4 | static forRoot(configOptions?: IPartialConfigOptions, defaultJwtInterceptor?: boolean): ModuleWithProviders; 5 | } 6 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/oauth-service.d.ts: -------------------------------------------------------------------------------- 1 | import { IOauth2Options, IOauth1Options } from './config-interfaces'; 2 | import { Observable } from 'rxjs'; 3 | export interface IOauthService { 4 | open(options: IOauth2Options | IOauth1Options, userData: object): Observable; 5 | } 6 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/oauth.service.d.ts: -------------------------------------------------------------------------------- 1 | import { Observable } from 'rxjs'; 2 | import { PopupService } from './popup.service'; 3 | import { ConfigService } from './config.service'; 4 | import { SharedService } from './shared.service'; 5 | import { HttpClient } from '@angular/common/http'; 6 | export declare class OauthService { 7 | private http; 8 | private shared; 9 | private config; 10 | private popup; 11 | readonly depProviders: ({ 12 | provide: typeof HttpClient; 13 | useValue: HttpClient; 14 | } | { 15 | provide: typeof PopupService; 16 | useValue: PopupService; 17 | } | { 18 | provide: typeof ConfigService; 19 | useValue: ConfigService; 20 | })[]; 21 | readonly deps: (typeof HttpClient | typeof ConfigService | typeof PopupService)[]; 22 | constructor(http: HttpClient, shared: SharedService, config: ConfigService, popup: PopupService); 23 | authenticate(name: string, userData?: any): Observable; 24 | unlink(provider: string, url?: string, method?: string): Observable; 25 | } 26 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/oauth1.service.d.ts: -------------------------------------------------------------------------------- 1 | import { HttpClient } from '@angular/common/http'; 2 | import { Observable } from 'rxjs'; 3 | import { IOauth1Options } from './config-interfaces'; 4 | import { ConfigService } from './config.service'; 5 | import { IOauthService } from './oauth-service'; 6 | import { PopupService } from './popup.service'; 7 | export declare class Oauth1Service implements IOauthService { 8 | private http; 9 | private popup; 10 | private config; 11 | constructor(http: HttpClient, popup: PopupService, config: ConfigService); 12 | open(oauthOptions: IOauth1Options, userData: object): Observable; 13 | private exchangeForToken; 14 | } 15 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/oauth2.service.d.ts: -------------------------------------------------------------------------------- 1 | import { HttpClient } from '@angular/common/http'; 2 | import { Observable } from 'rxjs'; 3 | import { IOauth2Options } from './config-interfaces'; 4 | import { ConfigService } from './config.service'; 5 | import { IOauthService } from './oauth-service'; 6 | import { PopupService } from './popup.service'; 7 | export declare class Oauth2Service implements IOauthService { 8 | private http; 9 | private popup; 10 | private config; 11 | constructor(http: HttpClient, popup: PopupService, config: ConfigService); 12 | open(oauthOptions: IOauth2Options, userData: object): Observable; 13 | private exchangeForToken; 14 | private getAuthorizationData; 15 | } 16 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/popup.service.d.ts: -------------------------------------------------------------------------------- 1 | import { Observable } from 'rxjs'; 2 | import { IOauth1Options, IOauth2Options } from './config-interfaces'; 3 | export declare class PopupService { 4 | open(url: string, options: IOauth2Options | IOauth1Options, cordova?: boolean): Observable; 5 | waitForClose(popupWindow: Window, cordova?: boolean, redirectUri?: string): Observable; 6 | private eventListener; 7 | private pollPopup; 8 | private prepareOptions; 9 | private stringifyOptions; 10 | private parseQueryString; 11 | private isCordovaApp; 12 | } 13 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/shared.service.d.ts: -------------------------------------------------------------------------------- 1 | import { StorageType } from './storage-type.enum'; 2 | import { Observable } from 'rxjs'; 3 | import { StorageService } from './storage-service'; 4 | import { ConfigService } from './config.service'; 5 | export declare class SharedService { 6 | private storage; 7 | private config; 8 | tokenName: string; 9 | constructor(storage: StorageService, config: ConfigService); 10 | getToken(): string; 11 | getPayload(token?: string): any; 12 | setToken(response: string | object): void; 13 | removeToken(): void; 14 | isAuthenticated(token?: string): boolean; 15 | getExpirationDate(token?: string): Date; 16 | logout(): Observable; 17 | setStorageType(type: StorageType): boolean; 18 | private b64DecodeUnicode; 19 | } 20 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/storage-service.d.ts: -------------------------------------------------------------------------------- 1 | import { StorageType } from './storage-type.enum'; 2 | export declare abstract class StorageService { 3 | abstract updateStorageType(storageType: StorageType): boolean; 4 | abstract get(key: string): string; 5 | abstract set(key: string, value: string, date: string): void; 6 | abstract remove(key: string): void; 7 | } 8 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/storage-type.enum.d.ts: -------------------------------------------------------------------------------- 1 | export declare enum StorageType { 2 | NONE = "none", 3 | MEMORY = "memory", 4 | LOCAL_STORAGE = "localStorage", 5 | SESSION_STORAGE = "sessionStorage", 6 | COOKIE = "cookie", 7 | SESSION_COOKIE = "sessionCookie" 8 | } 9 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/lib/utils.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Created by Ron on 17/12/2015. 3 | */ 4 | export declare function joinUrl(baseUrl: string, url: string): string; 5 | export declare function buildQueryString(obj: object): string; 6 | export declare function getWindowOrigin(w?: Window): string; 7 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/ng2-ui-auth.d.ts: -------------------------------------------------------------------------------- 1 | /** 2 | * Generated bundle index. Do not edit. 3 | */ 4 | export * from './public_api'; 5 | export { IPartialConfigOptions as ɵa } from './lib/config-interfaces'; 6 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/ng2-ui-auth.metadata.json: -------------------------------------------------------------------------------- 1 | {"__symbolic":"module","version":4,"metadata":{"Ng2UiAuthModule":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"NgModule","line":14,"character":1},"arguments":[{"imports":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClientModule","line":15,"character":12}],"declarations":[],"exports":[]}]}],"members":{},"statics":{"forRoot":{"__symbolic":"function","parameters":["configOptions","defaultJwtInterceptor"],"defaults":[null,true],"value":{"ngModule":{"__symbolic":"reference","name":"Ng2UiAuthModule"},"providers":[{"__symbolic":"spread","expression":{"__symbolic":"if","condition":{"__symbolic":"reference","name":"configOptions"},"thenExpression":[{"provide":{"__symbolic":"reference","name":"CONFIG_OPTIONS"},"useValue":{"__symbolic":"reference","name":"configOptions"}}],"elseExpression":[]}},{"provide":{"__symbolic":"reference","name":"ConfigService"},"useClass":{"__symbolic":"reference","name":"ConfigService"},"deps":[{"__symbolic":"reference","name":"CONFIG_OPTIONS"}]},{"provide":{"__symbolic":"reference","name":"StorageService"},"useClass":{"__symbolic":"reference","name":"BrowserStorageService"},"deps":[{"__symbolic":"reference","name":"ConfigService"}]},{"provide":{"__symbolic":"reference","name":"SharedService"},"useClass":{"__symbolic":"reference","name":"SharedService"},"deps":[{"__symbolic":"reference","name":"StorageService"},{"__symbolic":"reference","name":"ConfigService"}]},{"provide":{"__symbolic":"reference","name":"LocalService"},"useClass":{"__symbolic":"reference","name":"LocalService"},"deps":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":28,"character":64},{"__symbolic":"reference","name":"SharedService"},{"__symbolic":"reference","name":"ConfigService"}]},{"provide":{"__symbolic":"reference","name":"PopupService"},"useClass":{"__symbolic":"reference","name":"PopupService"},"deps":[{"__symbolic":"reference","name":"ConfigService"}]},{"provide":{"__symbolic":"reference","name":"OauthService"},"useClass":{"__symbolic":"reference","name":"OauthService"},"deps":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":30,"character":64},{"__symbolic":"reference","name":"SharedService"},{"__symbolic":"reference","name":"ConfigService"},{"__symbolic":"reference","name":"PopupService"}]},{"provide":{"__symbolic":"reference","name":"AuthService"},"useClass":{"__symbolic":"reference","name":"AuthService"},"deps":[{"__symbolic":"reference","name":"SharedService"},{"__symbolic":"reference","name":"LocalService"},{"__symbolic":"reference","name":"OauthService"}]},{"__symbolic":"spread","expression":{"__symbolic":"if","condition":{"__symbolic":"reference","name":"defaultJwtInterceptor"},"thenExpression":[{"provide":{"__symbolic":"reference","module":"@angular/common/http","name":"HTTP_INTERCEPTORS","line":33,"character":24},"useClass":{"__symbolic":"reference","name":"JwtInterceptor"},"multi":true,"deps":[{"__symbolic":"reference","name":"SharedService"},{"__symbolic":"reference","name":"ConfigService"}]}],"elseExpression":[]}}]}}}},"LocalService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":8,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":10,"character":28},{"__symbolic":"reference","name":"SharedService"},{"__symbolic":"reference","name":"ConfigService"}]}],"login":[{"__symbolic":"method"}],"signup":[{"__symbolic":"method"}]}},"Oauth2Service":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":12,"character":28},{"__symbolic":"reference","name":"PopupService"},{"__symbolic":"reference","name":"ConfigService"}]}],"open":[{"__symbolic":"method"}],"exchangeForToken":[{"__symbolic":"method"}],"getAuthorizationData":[{"__symbolic":"method"}]}},"Oauth1Service":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":10,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":12,"character":28},{"__symbolic":"reference","name":"PopupService"},{"__symbolic":"reference","name":"ConfigService"}]}],"open":[{"__symbolic":"method"}],"exchangeForToken":[{"__symbolic":"method"}]}},"PopupService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"open":[{"__symbolic":"method"}],"waitForClose":[{"__symbolic":"method"}],"eventListener":[{"__symbolic":"method"}],"pollPopup":[{"__symbolic":"method"}],"prepareOptions":[{"__symbolic":"method"}],"stringifyOptions":[{"__symbolic":"method"}],"parseQueryString":[{"__symbolic":"method"}],"isCordovaApp":[{"__symbolic":"method"}]}},"OauthService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":12,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","module":"@angular/common/http","name":"HttpClient","line":21,"character":28},{"__symbolic":"reference","name":"SharedService"},{"__symbolic":"reference","name":"ConfigService"},{"__symbolic":"reference","name":"PopupService"}]}],"authenticate":[{"__symbolic":"method"}],"unlink":[{"__symbolic":"method"}]}},"SharedService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"StorageService"},{"__symbolic":"reference","name":"ConfigService"}]}],"getToken":[{"__symbolic":"method"}],"getPayload":[{"__symbolic":"method"}],"setToken":[{"__symbolic":"method"}],"removeToken":[{"__symbolic":"method"}],"isAuthenticated":[{"__symbolic":"method"}],"getExpirationDate":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}],"setStorageType":[{"__symbolic":"method"}],"b64DecodeUnicode":[{"__symbolic":"method"}]}},"StorageService":{"__symbolic":"class","members":{"updateStorageType":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"set":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}]}},"BrowserStorageService":{"__symbolic":"class","extends":{"__symbolic":"reference","name":"StorageService"},"decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":5,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"ConfigService"}]}],"updateStorageType":[{"__symbolic":"method"}],"get":[{"__symbolic":"method"}],"set":[{"__symbolic":"method"}],"remove":[{"__symbolic":"method"}],"checkIsStorageAvailable":[{"__symbolic":"method"}],"isWindowStorageAvailable":[{"__symbolic":"method"}],"isCookieStorageAvailable":[{"__symbolic":"method"}],"setCookie":[{"__symbolic":"method"}],"removeCookie":[{"__symbolic":"method"}],"getCookie":[{"__symbolic":"method"}]}},"AuthService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":7,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"SharedService"},{"__symbolic":"reference","name":"LocalService"},{"__symbolic":"reference","name":"OauthService"}]}],"login":[{"__symbolic":"method"}],"signup":[{"__symbolic":"method"}],"logout":[{"__symbolic":"method"}],"authenticate":[{"__symbolic":"method"}],"link":[{"__symbolic":"method"}],"unlink":[{"__symbolic":"method"}],"isAuthenticated":[{"__symbolic":"method"}],"getToken":[{"__symbolic":"method"}],"setToken":[{"__symbolic":"method"}],"removeToken":[{"__symbolic":"method"}],"getPayload":[{"__symbolic":"method"}],"setStorageType":[{"__symbolic":"method"}],"getExpirationDate":[{"__symbolic":"method"}]}},"ConfigService":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameterDecorators":[[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Inject","line":52,"character":15},"arguments":[{"__symbolic":"reference","name":"CONFIG_OPTIONS"}]}]],"parameters":[{"__symbolic":"reference","name":"ɵa"}]}],"updateProviders":[{"__symbolic":"method"}],"mergeWithDefaultProviders":[{"__symbolic":"method"}]}},"JwtInterceptor":{"__symbolic":"class","decorators":[{"__symbolic":"call","expression":{"__symbolic":"reference","module":"@angular/core","name":"Injectable","line":6,"character":1}}],"members":{"__ctor__":[{"__symbolic":"constructor","parameters":[{"__symbolic":"reference","name":"SharedService"},{"__symbolic":"reference","name":"ConfigService"}]}],"intercept":[{"__symbolic":"method"}]}},"CONFIG_OPTIONS":{"__symbolic":"new","expression":{"__symbolic":"reference","module":"@angular/core","name":"InjectionToken","line":5,"character":34},"arguments":["config.options"]},"ɵa":{"__symbolic":"interface"},"IProviders":{"__symbolic":"interface"},"StorageType":{"NONE":"none","MEMORY":"memory","LOCAL_STORAGE":"localStorage","SESSION_STORAGE":"sessionStorage","COOKIE":"cookie","SESSION_COOKIE":"sessionCookie"}},"origins":{"Ng2UiAuthModule":"./lib/ng2-ui-auth.module","LocalService":"./lib/local.service","Oauth2Service":"./lib/oauth2.service","Oauth1Service":"./lib/oauth1.service","PopupService":"./lib/popup.service","OauthService":"./lib/oauth.service","SharedService":"./lib/shared.service","StorageService":"./lib/storage-service","BrowserStorageService":"./lib/browser-storage.service","AuthService":"./lib/auth.service","ConfigService":"./lib/config.service","JwtInterceptor":"./lib/interceptor.service","CONFIG_OPTIONS":"./lib/config.service","ɵa":"./lib/config-interfaces","IProviders":"./lib/config-interfaces","StorageType":"./lib/storage-type.enum"},"importAs":"ng2-ui-auth"} -------------------------------------------------------------------------------- /dist/ng2-ui-auth/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ng2-ui-auth", 3 | "version": "10.0.1", 4 | "peerDependencies": { 5 | "@angular/common": "^8.0.0", 6 | "@angular/core": "^8.0.0", 7 | "rxjs": "^6.0.0" 8 | }, 9 | "main": "bundles/ng2-ui-auth.umd.js", 10 | "module": "fesm5/ng2-ui-auth.js", 11 | "es2015": "fesm2015/ng2-ui-auth.js", 12 | "esm5": "esm5/ng2-ui-auth.js", 13 | "esm2015": "esm2015/ng2-ui-auth.js", 14 | "fesm5": "fesm5/ng2-ui-auth.js", 15 | "fesm2015": "fesm2015/ng2-ui-auth.js", 16 | "typings": "ng2-ui-auth.d.ts", 17 | "metadata": "ng2-ui-auth.metadata.json", 18 | "sideEffects": false, 19 | "dependencies": { 20 | "tslib": "^1.9.0" 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /dist/ng2-ui-auth/public_api.d.ts: -------------------------------------------------------------------------------- 1 | import { Ng2UiAuthModule } from './lib/ng2-ui-auth.module'; 2 | import { LocalService } from './lib/local.service'; 3 | import { Oauth2Service } from './lib/oauth2.service'; 4 | import { Oauth1Service } from './lib/oauth1.service'; 5 | import { PopupService } from './lib/popup.service'; 6 | import { OauthService } from './lib/oauth.service'; 7 | import { SharedService } from './lib/shared.service'; 8 | import { StorageService } from './lib/storage-service'; 9 | import { BrowserStorageService } from './lib/browser-storage.service'; 10 | import { AuthService } from './lib/auth.service'; 11 | import { ConfigService, CONFIG_OPTIONS } from './lib/config.service'; 12 | import { JwtInterceptor } from './lib/interceptor.service'; 13 | import { IProviders } from './lib/config-interfaces'; 14 | import { StorageType } from './lib/storage-type.enum'; 15 | export { Ng2UiAuthModule, LocalService, Oauth2Service, Oauth1Service, PopupService, OauthService, SharedService, StorageService, BrowserStorageService, AuthService, ConfigService, JwtInterceptor, CONFIG_OPTIONS, IProviders, StorageType }; 16 | -------------------------------------------------------------------------------- /package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ng2-ui-auth", 3 | "version": "10.0.1", 4 | "scripts": { 5 | "ng": "ng", 6 | "start": "ng serve", 7 | "build": "ng build", 8 | "test": "ng test", 9 | "lint": "ng lint", 10 | "e2e": "ng e2e" 11 | }, 12 | "main": "dist/ng2-ui-auth/bundles/ng2-ui-auth.umd.js", 13 | "module": "dist/ng2-ui-auth/fesm5/ng2-ui-auth.js", 14 | "es2015": "dist/ng2-ui-auth/fesm2015/ng2-ui-auth.js", 15 | "esm5": "dist/ng2-ui-auth/esm5/ng2-ui-auth.js", 16 | "esm2015": "dist/ng2-ui-auth/esm2015/ng2-ui-auth.js", 17 | "fesm5": "dist/ng2-ui-auth/fesm5/ng2-ui-auth.js", 18 | "fesm2015": "dist/ng2-ui-auth/fesm2015/ng2-ui-auth.js", 19 | "typings": "dist/ng2-ui-auth/ng2-ui-auth.d.ts", 20 | "metadata": "dist/ng2-ui-auth/ng2-ui-auth.metadata.json", 21 | "sideEffects": false, 22 | "private": true, 23 | "dependencies": { 24 | "tslib": "^1.10.0" 25 | }, 26 | "peerDependencies": { 27 | "@angular/common": "^8.0.0", 28 | "@angular/core": "^8.0.0", 29 | "rxjs": "^6.0.0" 30 | }, 31 | "devDependencies": { 32 | "@angular-devkit/build-angular": "^0.801.2", 33 | "@angular-devkit/build-ng-packagr": "~0.801.2", 34 | "@angular/animations": "^8.1.3", 35 | "@angular/cli": "^8.1.2", 36 | "@angular/common": "^8.1.3", 37 | "@angular/compiler": "^8.1.3", 38 | "@angular/compiler-cli": "^8.1.3", 39 | "@angular/core": "^8.1.3", 40 | "@angular/forms": "^8.1.3", 41 | "@angular/language-service": "^8.1.3", 42 | "@angular/platform-browser": "^8.1.3", 43 | "@angular/platform-browser-dynamic": "^8.1.3", 44 | "@angular/router": "^8.1.3", 45 | "@types/jasmine": "^3.3.16", 46 | "@types/jasminewd2": "~2.0.6", 47 | "@types/node": "^10.12.30", 48 | "core-js": "^3.1.4", 49 | "jasmine-core": "~3.3.0", 50 | "jasmine-spec-reporter": "~4.2.1", 51 | "karma": "^3.1.1", 52 | "karma-chrome-launcher": "~2.2.0", 53 | "karma-coverage-istanbul-reporter": "~2.0.4", 54 | "karma-jasmine": "~2.0.1", 55 | "karma-jasmine-html-reporter": "^1.4.0", 56 | "less": "^3.8.1", 57 | "ng-packagr": "^5.3.0", 58 | "protractor": "^5.4.1", 59 | "rxjs": "^6.5.2", 60 | "ts-node": "^8.3.0", 61 | "tsickle": "^0.36.0", 62 | "tslint": "~5.11.0", 63 | "typescript": "^3.4.5", 64 | "zone.js": "^0.9.1" 65 | } 66 | } 67 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/karma.conf.js: -------------------------------------------------------------------------------- 1 | // Karma configuration file, see link for more information 2 | // https://karma-runner.github.io/1.0/config/configuration-file.html 3 | 4 | module.exports = function (config) { 5 | config.set({ 6 | basePath: '', 7 | frameworks: ['jasmine', '@angular-devkit/build-angular'], 8 | plugins: [ 9 | require('karma-jasmine'), 10 | require('karma-chrome-launcher'), 11 | require('karma-jasmine-html-reporter'), 12 | require('karma-coverage-istanbul-reporter'), 13 | require('@angular-devkit/build-angular/plugins/karma') 14 | ], 15 | client: { 16 | clearContext: false // leave Jasmine Spec Runner output visible in browser 17 | }, 18 | coverageIstanbulReporter: { 19 | dir: require('path').join(__dirname, '../../coverage'), 20 | reports: ['html', 'lcovonly'], 21 | fixWebpackSourcePaths: true 22 | }, 23 | reporters: ['progress', 'kjhtml'], 24 | port: 9876, 25 | colors: true, 26 | logLevel: config.LOG_INFO, 27 | autoWatch: true, 28 | browsers: ['Chrome'], 29 | singleRun: false 30 | }); 31 | }; 32 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/ng-package.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/ng2-ui-auth", 4 | "deleteDestPath": false, 5 | "lib": { 6 | "entryFile": "src/public_api.ts" 7 | } 8 | } -------------------------------------------------------------------------------- /projects/ng2-ui-auth/ng-package.prod.json: -------------------------------------------------------------------------------- 1 | { 2 | "$schema": "../../node_modules/ng-packagr/ng-package.schema.json", 3 | "dest": "../../dist/lib", 4 | "lib": { 5 | "entryFile": "src/public_api.ts" 6 | } 7 | } -------------------------------------------------------------------------------- /projects/ng2-ui-auth/package.json: -------------------------------------------------------------------------------- 1 | { 2 | "name": "ng2-ui-auth", 3 | "version": "10.0.1", 4 | "peerDependencies": { 5 | "@angular/common": "^8.0.0", 6 | "@angular/core": "^8.0.0", 7 | "rxjs": "^6.0.0" 8 | } 9 | } 10 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/auth.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { AuthService } from './auth.service'; 4 | 5 | describe('AuthService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [AuthService] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([AuthService], (service: AuthService) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/auth.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { Observable } from 'rxjs'; 3 | import { LocalService } from './local.service'; 4 | import { OauthService } from './oauth.service'; 5 | import { SharedService } from './shared.service'; 6 | import { StorageType } from './storage-type.enum'; 7 | 8 | @Injectable() 9 | export class AuthService { 10 | constructor(private shared: SharedService, private local: LocalService, private oauth: OauthService) {} 11 | 12 | public login(user: string | object, url?: string): Observable { 13 | return this.local.login(user, url); 14 | } 15 | 16 | public signup(user: string | object, url?: string): Observable { 17 | return this.local.signup(user, url); 18 | } 19 | 20 | public logout(): Observable { 21 | return this.shared.logout(); 22 | } 23 | 24 | public authenticate(name: string, userData?: any): Observable { 25 | return this.oauth.authenticate(name, userData); 26 | } 27 | 28 | public link(name: string, userData?: any): Observable { 29 | return this.oauth.authenticate(name, userData); 30 | } 31 | 32 | public unlink(provider: string, url?: string): Observable { 33 | return this.oauth.unlink(provider, url); 34 | } 35 | 36 | public isAuthenticated(): boolean { 37 | return this.shared.isAuthenticated(); 38 | } 39 | 40 | public getToken(): string | null { 41 | return this.shared.getToken(); 42 | } 43 | 44 | public setToken(token: string | object): void { 45 | this.shared.setToken(token); 46 | } 47 | 48 | public removeToken(): void { 49 | this.shared.removeToken(); 50 | } 51 | 52 | public getPayload(): any { 53 | return this.shared.getPayload(); 54 | } 55 | 56 | public setStorageType(type: StorageType): boolean { 57 | return this.shared.setStorageType(type); 58 | } 59 | 60 | public getExpirationDate(): Date | null { 61 | return this.shared.getExpirationDate(); 62 | } 63 | } 64 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/browser-storage.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { BrowserStorageService } from './browser-storage.service'; 4 | 5 | describe('BrowserStorageService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [BrowserStorageService] 9 | }); 10 | }); 11 | 12 | it( 13 | 'should be created', 14 | inject([BrowserStorageService], (service: BrowserStorageService) => { 15 | expect(service).toBeTruthy(); 16 | }) 17 | ); 18 | }); 19 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/browser-storage.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { StorageService } from './storage-service'; 3 | import { StorageType } from './storage-type.enum'; 4 | import { ConfigService } from './config.service'; 5 | 6 | @Injectable() 7 | export class BrowserStorageService extends StorageService { 8 | private store: { [key: string]: string } = {}; 9 | private storageType = StorageType.MEMORY; 10 | 11 | constructor(private config: ConfigService) { 12 | super(); 13 | if (!this.updateStorageType(config.options.storageType)) { 14 | console.warn(config.options.storageType + ' is not available.'); 15 | } 16 | } 17 | 18 | public updateStorageType(storageType: StorageType) { 19 | const isStorageAvailable = this.checkIsStorageAvailable(storageType); 20 | if (!isStorageAvailable) { 21 | return false; 22 | } 23 | this.storageType = storageType; 24 | return true; 25 | } 26 | 27 | public get(key: string) { 28 | switch (this.storageType) { 29 | case StorageType.COOKIE: 30 | case StorageType.SESSION_COOKIE: 31 | return this.getCookie(key); 32 | case StorageType.LOCAL_STORAGE: 33 | case StorageType.SESSION_STORAGE: 34 | return window[this.storageType].getItem(key); 35 | case StorageType.MEMORY: 36 | return this.store[key]; 37 | case StorageType.NONE: 38 | default: 39 | return null; 40 | } 41 | } 42 | 43 | public set(key: string, value: string, date: string) { 44 | switch (this.storageType) { 45 | case StorageType.COOKIE: 46 | case StorageType.SESSION_COOKIE: 47 | this.setCookie(key, value, this.storageType === StorageType.COOKIE ? date : ''); 48 | break; 49 | case StorageType.LOCAL_STORAGE: 50 | case StorageType.SESSION_STORAGE: 51 | window[this.storageType].setItem(key, value); 52 | break; 53 | case StorageType.MEMORY: 54 | this.store[key] = value; 55 | break; 56 | case StorageType.NONE: 57 | default: 58 | break; 59 | } 60 | } 61 | 62 | public remove(key: string) { 63 | switch (this.storageType) { 64 | case StorageType.COOKIE: 65 | case StorageType.SESSION_COOKIE: 66 | this.removeCookie(key); 67 | break; 68 | case StorageType.LOCAL_STORAGE: 69 | case StorageType.SESSION_STORAGE: 70 | window[this.storageType].removeItem(key); 71 | break; 72 | case StorageType.MEMORY: 73 | delete this.store[key]; 74 | break; 75 | case StorageType.NONE: 76 | default: 77 | break; 78 | } 79 | } 80 | 81 | private checkIsStorageAvailable(storageType: StorageType) { 82 | switch (storageType) { 83 | case StorageType.COOKIE: 84 | case StorageType.SESSION_COOKIE: 85 | return this.isCookieStorageAvailable(); 86 | case StorageType.LOCAL_STORAGE: 87 | case StorageType.SESSION_STORAGE: 88 | return this.isWindowStorageAvailable(storageType); 89 | case StorageType.NONE: 90 | case StorageType.MEMORY: 91 | return true; 92 | default: 93 | return false; 94 | } 95 | } 96 | 97 | private isWindowStorageAvailable(storageType: StorageType.SESSION_STORAGE | StorageType.LOCAL_STORAGE) { 98 | try { 99 | const supported = window && storageType in window && window[storageType] !== null; 100 | 101 | if (supported) { 102 | const key = Math.random() 103 | .toString(36) 104 | .substring(7); 105 | window[storageType].setItem(key, ''); 106 | window[storageType].removeItem(key); 107 | } 108 | 109 | return supported; 110 | } catch (e) { 111 | return false; 112 | } 113 | } 114 | 115 | private isCookieStorageAvailable() { 116 | try { 117 | const supported = document && 'cookie' in document; 118 | 119 | if (supported) { 120 | const key = Math.random() 121 | .toString(36) 122 | .substring(7); 123 | this.setCookie(key, 'test', new Date(Date.now() + 60 * 1000).toUTCString()); 124 | const value = this.getCookie(key); 125 | this.removeCookie(key); 126 | return value === 'test'; 127 | } 128 | return false; 129 | } catch (e) { 130 | return false; 131 | } 132 | } 133 | 134 | private setCookie(key: string, value: string, expires = '', path = '/') { 135 | document.cookie = `${key}=${value}${expires ? `; expires=${expires}` : ''}; path=${path}`; 136 | } 137 | 138 | private removeCookie(key: string, path = '/') { 139 | this.setCookie(key, '', new Date(0).toUTCString(), path); 140 | } 141 | 142 | private getCookie(key: string) { 143 | return document.cookie.replace(new RegExp(`(?:(?:^|.*;\\s*)${key}\\s*\\=\\s*([^;]*).*$)|^.*$`), '$1'); 144 | } 145 | } 146 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/config-interfaces.ts: -------------------------------------------------------------------------------- 1 | import { StorageType } from './storage-type.enum'; 2 | 3 | export interface IPopupOptions { 4 | width?: number; 5 | height?: number; 6 | left?: number; 7 | top?: number; 8 | visibleToolbar?: boolean; 9 | } 10 | 11 | export interface IOauth1Options { 12 | url?: string; 13 | name?: string; 14 | redirectUri?: string; 15 | popupOptions?: IPopupOptions; 16 | authorizationEndpoint?: string; 17 | oauthType?: '1.0'; 18 | method?: string; 19 | } 20 | 21 | export interface IOauth2Options { 22 | url?: string; 23 | name?: string; 24 | redirectUri?: string; 25 | popupOptions?: IPopupOptions; 26 | authorizationEndpoint?: string; 27 | oauthType?: '2.0'; 28 | method?: string; 29 | responseType?: string; 30 | clientId?: string; 31 | additionalUrlParams?: { 32 | [paramName: string]: string | (() => string) | null | undefined; 33 | }; 34 | scopeDelimiter?: string; 35 | scope?: string[]; 36 | state?: string | (() => string); 37 | } 38 | 39 | export interface IProviders { 40 | [provider: string]: IOauth2Options | IOauth1Options; 41 | } 42 | 43 | export interface IConfigOptions { 44 | tokenRoot: string | null; 45 | cordova: boolean | null; 46 | baseUrl: string; 47 | loginUrl: string; 48 | signupUrl: string; 49 | unlinkUrl: string; 50 | tokenName: string; 51 | tokenSeparator: string; 52 | tokenPrefix: string; 53 | authToken: string; 54 | authHeader: string; 55 | storageType: StorageType; 56 | providers: IProviders; 57 | withCredentials: boolean; 58 | resolveToken: (response: any, config: IConfigOptions) => string; 59 | } 60 | 61 | // now even using ts 2.7.2 Partial causes "Could not resolve type Partial" build error... 62 | export interface IPartialConfigOptions { 63 | tokenRoot?: string | null; 64 | cordova?: boolean | null; 65 | baseUrl?: string; 66 | loginUrl?: string; 67 | signupUrl?: string; 68 | unlinkUrl?: string; 69 | tokenName?: string; 70 | tokenSeparator?: string; 71 | tokenPrefix?: string; 72 | authToken?: string; 73 | authHeader?: string; 74 | storageType?: StorageType; 75 | providers?: IProviders; 76 | withCredentials?: boolean; 77 | resolveToken?: (response: any, config: IConfigOptions) => string; 78 | } 79 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/config-providers.ts: -------------------------------------------------------------------------------- 1 | import { IProviders } from '../public_api'; 2 | import { getWindowOrigin } from './utils'; 3 | 4 | export const defaultProviders: IProviders = { 5 | facebook: { 6 | name: 'facebook', 7 | url: '/auth/facebook', 8 | redirectUri: `${getWindowOrigin()}/`, 9 | authorizationEndpoint: 'https://www.facebook.com/v2.5/dialog/oauth', 10 | additionalUrlParams: { 11 | display: 'popup' 12 | }, 13 | scope: ['email'], 14 | scopeDelimiter: ',', 15 | oauthType: '2.0', 16 | popupOptions: { width: 580, height: 400 } 17 | }, 18 | google: { 19 | name: 'google', 20 | url: '/auth/google', 21 | authorizationEndpoint: 'https://accounts.google.com/o/oauth2/v2/auth', 22 | additionalUrlParams: { 23 | display: 'popup', 24 | prompt: undefined, 25 | login_hint: undefined, 26 | access_type: undefined, 27 | include_granted_scopes: undefined, 28 | 'openid.realm': undefined, 29 | hd: undefined 30 | }, 31 | scope: ['openid', 'email'], 32 | scopeDelimiter: ' ', 33 | oauthType: '2.0', 34 | popupOptions: { width: 452, height: 633 }, 35 | state: () => 36 | encodeURIComponent( 37 | Math.random() 38 | .toString(36) 39 | .substr(2) 40 | ) 41 | }, 42 | github: { 43 | name: 'github', 44 | url: '/auth/github', 45 | authorizationEndpoint: 'https://github.com/login/oauth/authorize', 46 | scope: ['user:email'], 47 | scopeDelimiter: ' ', 48 | oauthType: '2.0', 49 | popupOptions: { width: 1020, height: 618 } 50 | }, 51 | instagram: { 52 | name: 'instagram', 53 | url: '/auth/instagram', 54 | authorizationEndpoint: 'https://api.instagram.com/oauth/authorize', 55 | scope: ['basic'], 56 | scopeDelimiter: '+', 57 | oauthType: '2.0' 58 | }, 59 | linkedin: { 60 | name: 'linkedin', 61 | url: '/auth/linkedin', 62 | authorizationEndpoint: 'https://www.linkedin.com/uas/oauth2/authorization', 63 | scope: ['r_emailaddress'], 64 | scopeDelimiter: ' ', 65 | oauthType: '2.0', 66 | popupOptions: { width: 527, height: 582 }, 67 | state: 'STATE' 68 | }, 69 | twitter: { 70 | name: 'twitter', 71 | url: '/auth/twitter', 72 | authorizationEndpoint: 'https://api.twitter.com/oauth/authenticate', 73 | oauthType: '1.0', 74 | popupOptions: { width: 495, height: 645 } 75 | }, 76 | twitch: { 77 | name: 'twitch', 78 | url: '/auth/twitch', 79 | authorizationEndpoint: 'https://api.twitch.tv/kraken/oauth2/authorize', 80 | scope: ['user_read'], 81 | scopeDelimiter: ' ', 82 | additionalUrlParams: { 83 | display: 'popup' 84 | }, 85 | oauthType: '2.0', 86 | popupOptions: { width: 500, height: 560 } 87 | }, 88 | live: { 89 | name: 'live', 90 | url: '/auth/live', 91 | authorizationEndpoint: 'https://login.live.com/oauth20_authorize.srf', 92 | additionalUrlParams: { 93 | display: 'popup' 94 | }, 95 | scope: ['wl.emails'], 96 | scopeDelimiter: ' ', 97 | oauthType: '2.0', 98 | popupOptions: { width: 500, height: 560 } 99 | }, 100 | yahoo: { 101 | name: 'yahoo', 102 | url: '/auth/yahoo', 103 | authorizationEndpoint: 'https://api.login.yahoo.com/oauth2/request_auth', 104 | scope: [], 105 | scopeDelimiter: ',', 106 | oauthType: '2.0', 107 | popupOptions: { width: 559, height: 519 } 108 | }, 109 | bitbucket: { 110 | name: 'bitbucket', 111 | url: '/auth/bitbucket', 112 | authorizationEndpoint: 'https://bitbucket.org/site/oauth2/authorize', 113 | redirectUri: `${getWindowOrigin()}/`, 114 | scope: ['email'], 115 | scopeDelimiter: ',', 116 | oauthType: '2.0', 117 | popupOptions: { width: 1028, height: 529 } 118 | }, 119 | spotify: { 120 | name: 'spotify', 121 | url: '/auth/spotify', 122 | authorizationEndpoint: 'https://accounts.spotify.com/authorize', 123 | scope: ['', 'user-read-email'], 124 | scopeDelimiter: ',', 125 | oauthType: '2.0', 126 | popupOptions: { width: 500, height: 530 }, 127 | state: () => 128 | encodeURIComponent( 129 | Math.random() 130 | .toString(36) 131 | .substr(2) 132 | ) 133 | } 134 | }; 135 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/config.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { ConfigService } from './config.service'; 4 | 5 | describe('ConfigService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [ConfigService] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([ConfigService], (service: ConfigService) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/config.service.ts: -------------------------------------------------------------------------------- 1 | import { Inject, Injectable, InjectionToken } from '@angular/core'; 2 | import { IConfigOptions, IPartialConfigOptions, IProviders } from './config-interfaces'; 3 | import { defaultProviders } from './config-providers'; 4 | import { StorageType } from './storage-type.enum'; 5 | 6 | export const CONFIG_OPTIONS = new InjectionToken('config.options'); 7 | @Injectable() 8 | export class ConfigService { 9 | public options = { 10 | withCredentials: false, 11 | tokenRoot: null, 12 | baseUrl: '/', 13 | loginUrl: '/auth/login', 14 | signupUrl: '/auth/signup', 15 | unlinkUrl: '/auth/unlink/', 16 | tokenName: 'token', 17 | tokenSeparator: '_', 18 | tokenPrefix: 'ng2-ui-auth', 19 | authHeader: 'Authorization', 20 | authToken: 'Bearer', 21 | storageType: StorageType.LOCAL_STORAGE, 22 | cordova: undefined, 23 | resolveToken: (response: any, config: IConfigOptions) => { 24 | const accessToken: string | { [key: string]: string } | null | undefined = 25 | response && (response.access_token || response.token || response.data); 26 | if (!accessToken) { 27 | // console.warn('No token found'); 28 | return null; 29 | } 30 | if (typeof accessToken === 'string') { 31 | return accessToken; 32 | } 33 | if (typeof accessToken !== 'object') { 34 | // console.warn('No token found'); 35 | return null; 36 | } 37 | const tokenRootData = 38 | config.tokenRoot && 39 | config.tokenRoot.split('.').reduce((o: any, x: any) => { 40 | return o[x]; 41 | }, accessToken); 42 | const token = tokenRootData ? tokenRootData[config.tokenName] : accessToken[config.tokenName]; 43 | if (token) { 44 | return token; 45 | } 46 | // const tokenPath = this.tokenRoot ? this.tokenRoot + '.' + this.tokenName : this.tokenName; 47 | // console.warn('Expecting a token named "' + tokenPath); 48 | return null; 49 | }, 50 | providers: {} 51 | }; 52 | 53 | constructor(@Inject(CONFIG_OPTIONS) options: IPartialConfigOptions) { 54 | this.options = { 55 | ...this.options, 56 | ...options 57 | }; 58 | this.mergeWithDefaultProviders(); 59 | } 60 | 61 | updateProviders(providers: IProviders) { 62 | this.options.providers = { 63 | ...(this.options.providers || {}), 64 | ...providers 65 | }; 66 | this.mergeWithDefaultProviders(); 67 | } 68 | 69 | mergeWithDefaultProviders() { 70 | Object.keys(this.options.providers).forEach(key => { 71 | if (key in defaultProviders) { 72 | this.options.providers[key] = { 73 | ...defaultProviders[key], 74 | ...this.options.providers[key] 75 | }; 76 | } 77 | }); 78 | } 79 | } 80 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/interceptor.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { InterceptorService } from './interceptor.service'; 4 | 5 | describe('InterceptorService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [InterceptorService] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([InterceptorService], (service: InterceptorService) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/interceptor.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { HttpInterceptor, HttpRequest, HttpHandler, HttpEvent } from '@angular/common/http'; 3 | import { SharedService } from './shared.service'; 4 | import { ConfigService } from './config.service'; 5 | import { Observable } from 'rxjs'; 6 | 7 | @Injectable() 8 | export class JwtInterceptor implements HttpInterceptor { 9 | constructor(private shared: SharedService, private config: ConfigService) {} 10 | 11 | intercept(req: HttpRequest, next: HttpHandler): Observable> { 12 | const { authHeader, authToken } = this.config.options; 13 | const token = this.shared.getToken(); 14 | const isAuthenticated = this.shared.isAuthenticated(); 15 | const newReq = 16 | isAuthenticated && !req.headers.has(authHeader) ? req.clone({ setHeaders: { [authHeader]: `${authToken} ${token}` } }) : req; 17 | return next.handle(newReq); 18 | } 19 | } 20 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/local.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { LocalService } from './local.service'; 4 | 5 | describe('LocalService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [LocalService] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([LocalService], (service: LocalService) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/local.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { HttpClient } from '@angular/common/http'; 3 | import { SharedService } from './shared.service'; 4 | import { ConfigService } from './config.service'; 5 | import { joinUrl } from './utils'; 6 | import { tap } from 'rxjs/operators'; 7 | import { Observable } from 'rxjs'; 8 | 9 | @Injectable() 10 | export class LocalService { 11 | constructor(private http: HttpClient, private shared: SharedService, private config: ConfigService) {} 12 | 13 | public login(user: string | object, url?: string): Observable { 14 | return this.http 15 | .post(url || joinUrl(this.config.options.baseUrl, this.config.options.loginUrl), user) 16 | .pipe(tap(data => this.shared.setToken(data))); 17 | } 18 | 19 | public signup(user: string | object, url?: string): Observable { 20 | return this.http.post(url || joinUrl(this.config.options.baseUrl, this.config.options.signupUrl), user); 21 | } 22 | } 23 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/ng2-ui-auth.module.ts: -------------------------------------------------------------------------------- 1 | import { NgModule, ModuleWithProviders } from '@angular/core'; 2 | import { HttpClientModule, HTTP_INTERCEPTORS } from '@angular/common/http'; 3 | import { IConfigOptions, IPartialConfigOptions } from './config-interfaces'; 4 | import { CONFIG_OPTIONS, ConfigService } from './config.service'; 5 | import { StorageService } from './storage-service'; 6 | import { BrowserStorageService } from './browser-storage.service'; 7 | import { SharedService } from './shared.service'; 8 | import { JwtInterceptor } from './interceptor.service'; 9 | import { OauthService } from './oauth.service'; 10 | import { HttpClient } from '@angular/common/http'; 11 | import { PopupService } from './popup.service'; 12 | import { LocalService } from './local.service'; 13 | import { AuthService } from './auth.service'; 14 | 15 | @NgModule({ 16 | imports: [HttpClientModule], 17 | declarations: [], 18 | exports: [] 19 | }) 20 | export class Ng2UiAuthModule { 21 | static forRoot(configOptions?: IPartialConfigOptions, defaultJwtInterceptor = true): ModuleWithProviders { 22 | return { 23 | ngModule: Ng2UiAuthModule, 24 | providers: [ 25 | ...(configOptions ? [{ provide: CONFIG_OPTIONS, useValue: configOptions }] : []), 26 | { provide: ConfigService, useClass: ConfigService, deps: [CONFIG_OPTIONS] }, 27 | { provide: StorageService, useClass: BrowserStorageService, deps: [ConfigService] }, 28 | { provide: SharedService, useClass: SharedService, deps: [StorageService, ConfigService] }, 29 | { provide: LocalService, useClass: LocalService, deps: [HttpClient, SharedService, ConfigService] }, 30 | { provide: PopupService, useClass: PopupService, deps: [ConfigService] }, 31 | { provide: OauthService, useClass: OauthService, deps: [HttpClient, SharedService, ConfigService, PopupService] }, 32 | { provide: AuthService, useClass: AuthService, deps: [SharedService, LocalService, OauthService] }, 33 | ...(defaultJwtInterceptor 34 | ? [{ provide: HTTP_INTERCEPTORS, useClass: JwtInterceptor, multi: true, deps: [SharedService, ConfigService] }] 35 | : []) 36 | ] 37 | }; 38 | } 39 | } 40 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/oauth-service.ts: -------------------------------------------------------------------------------- 1 | import { IOauth2Options, IOauth1Options } from './config-interfaces'; 2 | import { Observable } from 'rxjs'; 3 | 4 | export interface IOauthService { 5 | open(options: IOauth2Options | IOauth1Options, userData: object): Observable; 6 | } 7 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/oauth.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { OauthService } from './oauth.service'; 4 | 5 | describe('OauthService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [OauthService] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([OauthService], (service: OauthService) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/oauth.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable, Injector } from '@angular/core'; 2 | import { joinUrl } from './utils'; 3 | import { tap } from 'rxjs/operators'; 4 | import { Oauth1Service } from './oauth1.service'; 5 | import { Oauth2Service } from './oauth2.service'; 6 | import { Observable } from 'rxjs'; 7 | import { PopupService } from './popup.service'; 8 | import { ConfigService } from './config.service'; 9 | import { SharedService } from './shared.service'; 10 | import { HttpClient } from '@angular/common/http'; 11 | import { IOauthService } from './oauth-service'; 12 | 13 | @Injectable() 14 | export class OauthService { 15 | readonly depProviders = [ 16 | { provide: HttpClient, useValue: this.http }, 17 | { provide: PopupService, useValue: this.popup }, 18 | { provide: ConfigService, useValue: this.config } 19 | ]; 20 | readonly deps = [HttpClient, PopupService, ConfigService]; 21 | 22 | constructor(private http: HttpClient, private shared: SharedService, private config: ConfigService, private popup: PopupService) {} 23 | 24 | public authenticate(name: string, userData?: any): Observable { 25 | const provider: IOauthService = 26 | this.config.options.providers[name].oauthType === '1.0' 27 | ? Injector.create([...this.depProviders, { provide: Oauth1Service, deps: this.deps }]).get(Oauth1Service) 28 | : Injector.create([...this.depProviders, { provide: Oauth2Service, deps: this.deps }]).get(Oauth2Service); 29 | 30 | return provider.open(this.config.options.providers[name], userData || {}).pipe( 31 | tap(response => { 32 | // this is for a scenario when someone wishes to opt out from 33 | // satellizer's magic by doing authorization code exchange and 34 | // saving a token manually. 35 | if (this.config.options.providers[name].url) { 36 | this.shared.setToken(response); 37 | } 38 | }) 39 | ); 40 | } 41 | 42 | public unlink(provider: string, url = joinUrl(this.config.options.baseUrl, this.config.options.unlinkUrl), method = 'POST') { 43 | return this.http.request(method, url, { body: { provider } }); 44 | } 45 | } 46 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/oauth1.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { Oauth1Service } from './oauth1.service'; 4 | 5 | describe('Oauth1Service', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [Oauth1Service] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([Oauth1Service], (service: Oauth1Service) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/oauth1.service.ts: -------------------------------------------------------------------------------- 1 | import { HttpClient } from '@angular/common/http'; 2 | import { Injectable } from '@angular/core'; 3 | import { Observable } from 'rxjs'; 4 | import { map, switchMap, tap } from 'rxjs/operators'; 5 | import { IOauth1Options } from './config-interfaces'; 6 | import { ConfigService } from './config.service'; 7 | import { IOauthService } from './oauth-service'; 8 | import { PopupService } from './popup.service'; 9 | import { buildQueryString, joinUrl } from './utils'; 10 | 11 | @Injectable() 12 | export class Oauth1Service implements IOauthService { 13 | constructor(private http: HttpClient, private popup: PopupService, private config: ConfigService) {} 14 | 15 | open(oauthOptions: IOauth1Options, userData: object): Observable { 16 | const serverUrl = this.config.options.baseUrl ? joinUrl(this.config.options.baseUrl, oauthOptions.url) : oauthOptions.url; 17 | return this.popup.open('about:blank', oauthOptions, this.config.options.cordova).pipe( 18 | switchMap(popupWindow => 19 | this.http.post(serverUrl, oauthOptions).pipe( 20 | tap(authorizationData => 21 | popupWindow 22 | ? popupWindow.location.replace([oauthOptions.authorizationEndpoint, buildQueryString(authorizationData)].join('?')) 23 | : undefined 24 | ), 25 | switchMap(authorizationData => 26 | this.popup 27 | .waitForClose(popupWindow, this.config.options.cordova, oauthOptions.redirectUri) 28 | .pipe(map(oauthData => ({ authorizationData, oauthData }))) 29 | ) 30 | ) 31 | ), 32 | switchMap(({ authorizationData, oauthData }) => this.exchangeForToken(oauthOptions, authorizationData, oauthData, userData)) 33 | ); 34 | } 35 | 36 | private exchangeForToken(oauthOptions: IOauth1Options, authorizationData: object, oauthData: object, userData: object) { 37 | const body = { oauthOptions, authorizationData, oauthData, userData }; 38 | const { withCredentials, baseUrl } = this.config.options; 39 | const { method = 'POST', url } = oauthOptions; 40 | const exchangeForTokenUrl = baseUrl ? joinUrl(baseUrl, url) : url; 41 | return this.http.request(method, exchangeForTokenUrl, { body, withCredentials }); 42 | } 43 | } 44 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/oauth2.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { Oauth2Service } from './oauth2.service'; 4 | 5 | describe('Oauth2Service', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [Oauth2Service] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([Oauth2Service], (service: Oauth2Service) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/oauth2.service.ts: -------------------------------------------------------------------------------- 1 | import { HttpClient } from '@angular/common/http'; 2 | import { Injectable } from '@angular/core'; 3 | import { empty, Observable, of } from 'rxjs'; 4 | import { switchMap } from 'rxjs/operators'; 5 | import { IOauth2Options } from './config-interfaces'; 6 | import { ConfigService } from './config.service'; 7 | import { IOauthService } from './oauth-service'; 8 | import { PopupService } from './popup.service'; 9 | import { buildQueryString, getWindowOrigin, joinUrl } from './utils'; 10 | 11 | @Injectable() 12 | export class Oauth2Service implements IOauthService { 13 | constructor(private http: HttpClient, private popup: PopupService, private config: ConfigService) {} 14 | 15 | open(oauthOptions: IOauth2Options, userData: object): Observable { 16 | const authorizationData = this.getAuthorizationData(oauthOptions); 17 | const url = [oauthOptions.authorizationEndpoint, buildQueryString(authorizationData)].join('?'); 18 | return this.popup.open(url, oauthOptions, this.config.options.cordova).pipe( 19 | switchMap((window?: Window) => 20 | window ? this.popup.waitForClose(window, this.config.options.cordova, oauthOptions.redirectUri) : empty() 21 | ), 22 | switchMap((oauthData: any) => { 23 | // when no server URL provided, return popup params as-is. 24 | // this is for a scenario when someone wishes to opt out from 25 | // satellizer's magic by doing authorization code exchange and 26 | // saving a token manually. 27 | if (oauthOptions.responseType === 'token' || !oauthOptions.url) { 28 | return of(oauthData); 29 | } 30 | 31 | if (oauthData.state && oauthData.state !== authorizationData.state) { 32 | throw new Error('OAuth "state" mismatch'); 33 | } 34 | return this.exchangeForToken(oauthOptions, authorizationData, oauthData, userData); 35 | }) 36 | ); 37 | } 38 | 39 | private exchangeForToken(options: IOauth2Options, authorizationData: object, oauthData: object, userData: object) { 40 | const body = { authorizationData, oauthData, userData }; 41 | const { baseUrl, withCredentials } = this.config.options; 42 | const { url, method = 'POST' } = options; 43 | const exchangeForTokenUrl = baseUrl ? joinUrl(baseUrl, url) : url; 44 | return this.http.request(method, exchangeForTokenUrl, { body, withCredentials }); 45 | } 46 | 47 | private getAuthorizationData(options: IOauth2Options) { 48 | const { 49 | responseType = 'code', 50 | clientId, 51 | redirectUri = getWindowOrigin() || '', 52 | scopeDelimiter = ',', 53 | scope, 54 | state, 55 | additionalUrlParams 56 | } = options; 57 | const resolvedState = typeof state === 'function' ? state() : state; 58 | return [ 59 | ['response_type', responseType], 60 | ['client_id', clientId], 61 | ['redirect_uri', redirectUri], 62 | ...(state ? [['state', resolvedState]] : []), 63 | ...(scope ? [['scope', scope.join(scopeDelimiter)]] : []), 64 | ...(additionalUrlParams 65 | ? Object.keys(additionalUrlParams).map(key => { 66 | const value: string | (() => string) | null | undefined = (additionalUrlParams as any)[key]; 67 | if (typeof value === 'string') { 68 | return [key, value]; 69 | } else if (typeof value === 'function') { 70 | return [key, value()]; 71 | } else if (value === null) { 72 | return [key, '']; 73 | } 74 | return ['', '']; 75 | }) 76 | : []) 77 | ] 78 | .filter(_ => !!_[0]) 79 | .reduce((acc, next) => ({ ...acc, [next[0]]: next[1] }), {} as { [key: string]: string }); 80 | } 81 | } 82 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/popup.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { PopupService } from './popup.service'; 4 | 5 | describe('PopupService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [PopupService] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([PopupService], (service: PopupService) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/popup.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { empty, fromEvent, interval, merge, Observable, of, throwError } from 'rxjs'; 3 | import { delay, map, switchMap, take } from 'rxjs/operators'; 4 | import { IOauth1Options, IOauth2Options, IPopupOptions } from './config-interfaces'; 5 | import { getWindowOrigin } from './utils'; 6 | 7 | declare const cordova: any; 8 | @Injectable() 9 | export class PopupService { 10 | public open(url: string, options: IOauth2Options | IOauth1Options, cordova = this.isCordovaApp()) { 11 | const stringifiedOptions = this.stringifyOptions(this.prepareOptions(options.popupOptions)); 12 | const windowName = cordova ? '_blank' : options.name; 13 | 14 | const popupWindow = typeof window !== 'undefined' ? window.open(url, windowName, stringifiedOptions) : null; 15 | 16 | if (popupWindow) { 17 | if (popupWindow.focus) { 18 | popupWindow.focus(); 19 | } 20 | return of(popupWindow); 21 | } 22 | return empty(); 23 | } 24 | 25 | public waitForClose(popupWindow: Window, cordova = this.isCordovaApp(), redirectUri = getWindowOrigin()) { 26 | return cordova ? this.eventListener(popupWindow, redirectUri) : this.pollPopup(popupWindow, redirectUri); 27 | } 28 | 29 | private eventListener(popupWindow: Window, redirectUri = getWindowOrigin()) { 30 | if (!popupWindow) { 31 | throw new Error('Popup was not created'); 32 | } 33 | return merge( 34 | fromEvent(popupWindow, 'exit').pipe( 35 | delay(100), 36 | map(() => { 37 | throw new Error('Authentication Canceled'); 38 | }) 39 | ), 40 | fromEvent(popupWindow, 'loadstart') 41 | ).pipe( 42 | switchMap((event: Event & { url: string }) => { 43 | if (!popupWindow || popupWindow.closed) { 44 | return Observable.throw(new Error('Authentication Canceled')); 45 | } 46 | if (event.url.indexOf(redirectUri) !== 0) { 47 | return empty(); 48 | } 49 | 50 | const parser = document.createElement('a'); 51 | parser.href = event.url; 52 | 53 | if (parser.search || parser.hash) { 54 | const queryParams = parser.search.substring(1).replace(/\/$/, ''); 55 | const hashParams = parser.hash.substring(1).replace(/\/$/, ''); 56 | const hash = this.parseQueryString(hashParams); 57 | const qs = this.parseQueryString(queryParams); 58 | const allParams = { ...qs, ...hash }; 59 | 60 | popupWindow.close(); 61 | 62 | if (allParams.error) { 63 | throw allParams.error; 64 | } else { 65 | return of(allParams); 66 | } 67 | } 68 | return empty(); 69 | }), 70 | take(1) 71 | ); 72 | } 73 | 74 | private pollPopup(popupWindow: Window, redirectUri = getWindowOrigin()) { 75 | return interval(50).pipe( 76 | switchMap(() => { 77 | if (!popupWindow || popupWindow.closed) { 78 | return throwError(new Error('Authentication Canceled')); 79 | } 80 | 81 | const popupWindowOrigin = getWindowOrigin(popupWindow); 82 | 83 | if ( 84 | popupWindowOrigin && 85 | (redirectUri.indexOf(popupWindowOrigin) === 0 || popupWindowOrigin.indexOf(redirectUri) === 0) && 86 | (popupWindow.location.search || popupWindow.location.hash) 87 | ) { 88 | const queryParams = popupWindow.location.search.substring(1).replace(/\/$/, ''); 89 | const hashParams = popupWindow.location.hash.substring(1).replace(/[\/$]/, ''); 90 | const hash = this.parseQueryString(hashParams); 91 | const qs = this.parseQueryString(queryParams); 92 | popupWindow.close(); 93 | const allParams = { ...qs, ...hash }; 94 | if (allParams.error) { 95 | throw allParams.error; 96 | } else { 97 | return of(allParams); 98 | } 99 | } 100 | return empty(); 101 | }), 102 | take(1) 103 | ); 104 | } 105 | 106 | private prepareOptions(options?: IPopupOptions) { 107 | options = options || {}; 108 | const width = options.width || 500; 109 | const height = options.height || 500; 110 | return { 111 | width, 112 | height, 113 | left: window.screenX + (window.outerWidth - width) / 2, 114 | top: window.screenY + (window.outerHeight - height) / 2.5, 115 | toolbar: options.visibleToolbar ? 'yes' : 'no', 116 | ...options 117 | }; 118 | } 119 | 120 | private stringifyOptions(options: { [index: string]: string | number | boolean | null | undefined }) { 121 | return Object.keys(options) 122 | .map(key => (options[key] === null || options[key] === undefined ? key : key + '=' + options[key])) 123 | .join(','); 124 | } 125 | 126 | private parseQueryString(joinedKeyValue: string): any { 127 | let key; 128 | let value; 129 | return joinedKeyValue.split('&').reduce( 130 | (obj, keyValue) => { 131 | if (keyValue) { 132 | value = keyValue.split('='); 133 | key = decodeURIComponent(value[0]); 134 | obj[key] = typeof value[1] !== 'undefined' ? decodeURIComponent(value[1]) : true; 135 | } 136 | return obj; 137 | }, 138 | {} as { [k: string]: string | true } 139 | ); 140 | } 141 | 142 | private isCordovaApp() { 143 | return typeof cordova === 'object' || (document.URL.indexOf('http://') === -1 && document.URL.indexOf('https://') === -1); 144 | } 145 | } 146 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/shared.service.spec.ts: -------------------------------------------------------------------------------- 1 | import { TestBed, inject } from '@angular/core/testing'; 2 | 3 | import { SharedService } from './shared.service'; 4 | 5 | describe('SharedService', () => { 6 | beforeEach(() => { 7 | TestBed.configureTestingModule({ 8 | providers: [SharedService] 9 | }); 10 | }); 11 | 12 | it('should be created', inject([SharedService], (service: SharedService) => { 13 | expect(service).toBeTruthy(); 14 | })); 15 | }); 16 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/shared.service.ts: -------------------------------------------------------------------------------- 1 | import { Injectable } from '@angular/core'; 2 | import { StorageType } from './storage-type.enum'; 3 | import { Subscriber, Observable } from 'rxjs'; 4 | import { StorageService } from './storage-service'; 5 | import { ConfigService } from './config.service'; 6 | 7 | @Injectable() 8 | export class SharedService { 9 | public tokenName = this.config.options.tokenPrefix 10 | ? [this.config.options.tokenPrefix, this.config.options.tokenName].join(this.config.options.tokenSeparator) 11 | : this.config.options.tokenName; 12 | 13 | constructor(private storage: StorageService, private config: ConfigService) {} 14 | 15 | public getToken() { 16 | return this.storage.get(this.tokenName); 17 | } 18 | 19 | public getPayload(token = this.getToken()) { 20 | if (token && token.split('.').length === 3) { 21 | try { 22 | const base64Url = token.split('.')[1]; 23 | const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); 24 | return JSON.parse(this.b64DecodeUnicode(base64)); 25 | } catch (e) { 26 | return undefined; 27 | } 28 | } 29 | } 30 | 31 | public setToken(response: string | object) { 32 | if (!response) { 33 | // console.warn('Can\'t set token without passing a value'); 34 | return; 35 | } 36 | 37 | let token: string; 38 | if (typeof response === 'string') { 39 | token = response; 40 | } else { 41 | token = this.config.options.resolveToken(response, this.config.options); 42 | } 43 | 44 | if (token) { 45 | const expDate = this.getExpirationDate(token); 46 | this.storage.set(this.tokenName, token, expDate ? expDate.toUTCString() : ''); 47 | } 48 | } 49 | 50 | public removeToken() { 51 | this.storage.remove(this.tokenName); 52 | } 53 | 54 | public isAuthenticated(token = this.getToken()) { 55 | // a token is present 56 | if (token) { 57 | // token with a valid JWT format XXX.YYY.ZZZ 58 | if (token.split('.').length === 3) { 59 | // could be a valid JWT or an access token with the same format 60 | try { 61 | const base64Url = token.split('.')[1]; 62 | const base64 = base64Url.replace(/-/g, '+').replace(/_/g, '/'); 63 | const exp = JSON.parse(this.b64DecodeUnicode(base64)).exp; 64 | // jwt with an optional expiration claims 65 | if (exp) { 66 | const isExpired = Math.round(new Date().getTime() / 1000) >= exp; 67 | if (isExpired) { 68 | // fail: Expired token 69 | this.storage.remove(this.tokenName); 70 | return false; 71 | } else { 72 | // pass: Non-expired token 73 | return true; 74 | } 75 | } 76 | } catch (e) { 77 | // pass: Non-JWT token that looks like JWT 78 | return true; 79 | } 80 | } 81 | // pass: All other tokens 82 | return true; 83 | } 84 | // lail: No token at all 85 | return false; 86 | } 87 | 88 | public getExpirationDate(token = this.getToken()) { 89 | const payload = this.getPayload(token); 90 | if (payload && payload.exp && Math.round(new Date().getTime() / 1000) < payload.exp) { 91 | const date = new Date(0); 92 | date.setUTCSeconds(payload.exp); 93 | return date; 94 | } 95 | return null; 96 | } 97 | 98 | public logout(): Observable { 99 | return Observable.create((observer: Subscriber) => { 100 | this.storage.remove(this.tokenName); 101 | observer.next(); 102 | observer.complete(); 103 | }); 104 | } 105 | 106 | public setStorageType(type: StorageType) { 107 | return this.storage.updateStorageType(type); 108 | } 109 | 110 | private b64DecodeUnicode(str) { 111 | return decodeURIComponent(Array.prototype.map.call(atob(str), c => '%' + ('00' + c.charCodeAt(0).toString(16)).slice(-2)).join('')); 112 | } 113 | } 114 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/storage-service.ts: -------------------------------------------------------------------------------- 1 | import { StorageType } from './storage-type.enum'; 2 | 3 | export abstract class StorageService { 4 | abstract updateStorageType(storageType: StorageType): boolean; 5 | 6 | abstract get(key: string): string; 7 | 8 | abstract set(key: string, value: string, date: string): void; 9 | 10 | abstract remove(key: string): void; 11 | } 12 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/storage-type.enum.ts: -------------------------------------------------------------------------------- 1 | export enum StorageType { 2 | NONE = 'none', 3 | MEMORY = 'memory', 4 | LOCAL_STORAGE = 'localStorage', 5 | SESSION_STORAGE = 'sessionStorage', 6 | COOKIE = 'cookie', 7 | SESSION_COOKIE = 'sessionCookie' 8 | } 9 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/lib/utils.ts: -------------------------------------------------------------------------------- 1 | import { HttpHeaders, HttpParams } from '@angular/common/http'; 2 | 3 | /** 4 | * Created by Ron on 17/12/2015. 5 | */ 6 | 7 | export function joinUrl(baseUrl: string, url: string) { 8 | if (/^(?:[a-z]+:)?\/\//i.test(url)) { 9 | return url; 10 | } 11 | 12 | const joined = [baseUrl, url].join('/'); 13 | 14 | return joined 15 | .replace(/[\/]+/g, '/') 16 | .replace(/\/\?/g, '?') 17 | .replace(/\/\#/g, '#') 18 | .replace(/\:\//g, '://'); 19 | } 20 | 21 | export function buildQueryString(obj: object) { 22 | return Object.keys(obj) 23 | .map(key => (!!obj[key] ? `${encodeURIComponent(key)}=${encodeURIComponent(obj[key])}` : key)) 24 | .join('&'); 25 | } 26 | 27 | export function getWindowOrigin(w?: Window) { 28 | if (!w && typeof window !== 'undefined') { 29 | w = window; 30 | } 31 | try { 32 | if (!w || !w.location) { 33 | return null; 34 | } 35 | if (!w.location.origin) { 36 | return `${w.location.protocol}//${w.location.hostname}${w.location.port ? ':' + w.location.port : ''}`; 37 | } 38 | return w.location.origin; 39 | } catch (error) { 40 | return null; 41 | // ignore DOMException: Blocked a frame with origin from accessing a cross-origin frame. 42 | // error instanceof DOMException && error.name === 'SecurityError' 43 | } 44 | } 45 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/public_api.ts: -------------------------------------------------------------------------------- 1 | import { Ng2UiAuthModule } from './lib/ng2-ui-auth.module'; 2 | import { LocalService } from './lib/local.service'; 3 | import { Oauth2Service } from './lib/oauth2.service'; 4 | import { Oauth1Service } from './lib/oauth1.service'; 5 | import { PopupService } from './lib/popup.service'; 6 | import { OauthService } from './lib/oauth.service'; 7 | import { SharedService } from './lib/shared.service'; 8 | import { StorageService } from './lib/storage-service'; 9 | import { BrowserStorageService } from './lib/browser-storage.service'; 10 | import { AuthService } from './lib/auth.service'; 11 | import { ConfigService, CONFIG_OPTIONS } from './lib/config.service'; 12 | import { JwtInterceptor } from './lib/interceptor.service'; 13 | import { IProviders } from './lib/config-interfaces'; 14 | import { StorageType } from './lib/storage-type.enum'; 15 | 16 | /* 17 | * Public API Surface of ng2-ui-auth 18 | */ 19 | export { 20 | Ng2UiAuthModule, 21 | LocalService, 22 | Oauth2Service, 23 | Oauth1Service, 24 | PopupService, 25 | OauthService, 26 | SharedService, 27 | StorageService, 28 | BrowserStorageService, 29 | AuthService, 30 | ConfigService, 31 | JwtInterceptor, 32 | CONFIG_OPTIONS, 33 | IProviders, 34 | StorageType 35 | }; 36 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/src/test.ts: -------------------------------------------------------------------------------- 1 | // This file is required by karma.conf.js and loads recursively all the .spec and framework files 2 | 3 | import { getTestBed } from '@angular/core/testing'; 4 | import { BrowserDynamicTestingModule, platformBrowserDynamicTesting } from '@angular/platform-browser-dynamic/testing'; 5 | import 'core-js/es7/reflect'; 6 | import 'zone.js/dist/zone'; 7 | import 'zone.js/dist/zone-testing'; 8 | 9 | declare const require: any; 10 | 11 | // First, initialize the Angular testing environment. 12 | getTestBed().initTestEnvironment(BrowserDynamicTestingModule, platformBrowserDynamicTesting()); 13 | // Then we find all the tests. 14 | const context = require.context('./', true, /\.spec\.ts$/); 15 | // And load the modules. 16 | context.keys().map(context); 17 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/tsconfig.lib.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/lib", 5 | "target": "es2015", 6 | "module": "es2015", 7 | "moduleResolution": "node", 8 | "declaration": true, 9 | "sourceMap": true, 10 | "inlineSources": true, 11 | "emitDecoratorMetadata": true, 12 | "experimentalDecorators": true, 13 | "importHelpers": true, 14 | "types": [], 15 | "lib": [ 16 | "dom", 17 | "es2015" 18 | ] 19 | }, 20 | "angularCompilerOptions": { 21 | "annotateForClosureCompiler": true, 22 | "skipTemplateCodegen": true, 23 | "strictMetadataEmit": true, 24 | "fullTemplateTypeCheck": true, 25 | "strictInjectionParameters": true, 26 | "flatModuleId": "AUTOGENERATED", 27 | "flatModuleOutFile": "AUTOGENERATED" 28 | }, 29 | "exclude": [ 30 | "src/test.ts", 31 | "**/*.spec.ts" 32 | ] 33 | } 34 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/tsconfig.spec.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tsconfig.json", 3 | "compilerOptions": { 4 | "outDir": "../../out-tsc/spec", 5 | "types": [ 6 | "jasmine", 7 | "node" 8 | ] 9 | }, 10 | "files": [ 11 | "src/test.ts" 12 | ], 13 | "include": [ 14 | "**/*.spec.ts", 15 | "**/*.d.ts" 16 | ] 17 | } 18 | -------------------------------------------------------------------------------- /projects/ng2-ui-auth/tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "extends": "../../tslint.json", 3 | "rules": { 4 | "directive-selector": [ 5 | true, 6 | "attribute", 7 | "lib", 8 | "camelCase" 9 | ], 10 | "component-selector": [ 11 | true, 12 | "element", 13 | "lib", 14 | "kebab-case" 15 | ] 16 | } 17 | } 18 | -------------------------------------------------------------------------------- /tsconfig.json: -------------------------------------------------------------------------------- 1 | { 2 | "compileOnSave": false, 3 | "compilerOptions": { 4 | "baseUrl": "./", 5 | "outDir": "./dist/out-tsc", 6 | "sourceMap": true, 7 | "declaration": false, 8 | "moduleResolution": "node", 9 | "emitDecoratorMetadata": true, 10 | "experimentalDecorators": true, 11 | "target": "es5", 12 | "typeRoots": [ 13 | "node_modules/@types" 14 | ], 15 | "lib": [ 16 | "es2017", 17 | "dom" 18 | ], 19 | "paths": { 20 | "Ng2UiAuth": [ 21 | "dist/Ng2UiAuth" 22 | ] 23 | } 24 | } 25 | } -------------------------------------------------------------------------------- /tslint.json: -------------------------------------------------------------------------------- 1 | { 2 | "rulesDirectory": [ 3 | "node_modules/codelyzer" 4 | ], 5 | "rules": { 6 | "arrow-return-shorthand": true, 7 | "callable-types": true, 8 | "class-name": true, 9 | "comment-format": [ 10 | true, 11 | "check-space" 12 | ], 13 | "curly": true, 14 | "deprecation": { 15 | "severity": "warn" 16 | }, 17 | "eofline": true, 18 | "forin": true, 19 | "import-blacklist": [ 20 | true, 21 | "rxjs/Rx" 22 | ], 23 | "import-spacing": true, 24 | "indent": [ 25 | true, 26 | "spaces" 27 | ], 28 | "interface-over-type-literal": true, 29 | "label-position": true, 30 | "max-line-length": [ 31 | true, 32 | 140 33 | ], 34 | "member-access": false, 35 | "member-ordering": [ 36 | true, 37 | { 38 | "order": [ 39 | "static-field", 40 | "instance-field", 41 | "static-method", 42 | "instance-method" 43 | ] 44 | } 45 | ], 46 | "no-arg": true, 47 | "no-bitwise": true, 48 | "no-console": [ 49 | true, 50 | "debug", 51 | "info", 52 | "time", 53 | "timeEnd", 54 | "trace" 55 | ], 56 | "no-construct": true, 57 | "no-debugger": true, 58 | "no-duplicate-super": true, 59 | "no-empty": false, 60 | "no-empty-interface": true, 61 | "no-eval": true, 62 | "no-inferrable-types": [ 63 | true, 64 | "ignore-params" 65 | ], 66 | "no-misused-new": true, 67 | "no-non-null-assertion": true, 68 | "no-shadowed-variable": true, 69 | "no-string-literal": false, 70 | "no-string-throw": true, 71 | "no-switch-case-fall-through": true, 72 | "no-trailing-whitespace": true, 73 | "no-unnecessary-initializer": true, 74 | "no-unused-expression": true, 75 | "no-use-before-declare": true, 76 | "no-var-keyword": true, 77 | "object-literal-sort-keys": false, 78 | "one-line": [ 79 | true, 80 | "check-open-brace", 81 | "check-catch", 82 | "check-else", 83 | "check-whitespace" 84 | ], 85 | "prefer-const": true, 86 | "quotemark": [ 87 | true, 88 | "single" 89 | ], 90 | "radix": true, 91 | "semicolon": [ 92 | true, 93 | "always" 94 | ], 95 | "triple-equals": [ 96 | true, 97 | "allow-null-check" 98 | ], 99 | "typedef-whitespace": [ 100 | true, 101 | { 102 | "call-signature": "nospace", 103 | "index-signature": "nospace", 104 | "parameter": "nospace", 105 | "property-declaration": "nospace", 106 | "variable-declaration": "nospace" 107 | } 108 | ], 109 | "unified-signatures": true, 110 | "variable-name": false, 111 | "whitespace": [ 112 | true, 113 | "check-branch", 114 | "check-decl", 115 | "check-operator", 116 | "check-separator", 117 | "check-type" 118 | ], 119 | "no-output-on-prefix": true, 120 | "use-input-property-decorator": true, 121 | "use-output-property-decorator": true, 122 | "use-host-property-decorator": true, 123 | "no-input-rename": true, 124 | "no-output-rename": true, 125 | "use-life-cycle-interface": true, 126 | "use-pipe-transform-interface": true, 127 | "component-class-suffix": true, 128 | "directive-class-suffix": true 129 | } 130 | } 131 | --------------------------------------------------------------------------------