Browse Source

Changed to use Ionic pages for Stormpath

Matt Raible 7 years ago
parent
commit
adcbd8f3d1
2 changed files with 43 additions and 23 deletions
  1. 33
    13
      TUTORIAL.md
  2. 10
    10
      client/package.json

+ 33
- 13
TUTORIAL.md View File

153
 
153
 
154
 Access the API using `http localhost:8080/good-beers --auth <user>:<password>`.
154
 Access the API using `http localhost:8080/good-beers --auth <user>:<password>`.
155
 
155
 
156
-## Ionic App
156
+## Create Ionic App
157
 
157
 
158
 Install Ionic and Cordova: `yarn global add cordova ionic`
158
 Install Ionic and Cordova: `yarn global add cordova ionic`
159
 
159
 
174
 
174
 
175
 Thanks to the [recent release of Stormpath's Client API](https://stormpath.com/blog/client-api-authentication-mobile-frontend), you can now authenticate directly without needing to hit your server with a Stormpath SDK integration installed. This article shows you how to do just that in an Ionic application.
175
 Thanks to the [recent release of Stormpath's Client API](https://stormpath.com/blog/client-api-authentication-mobile-frontend), you can now authenticate directly without needing to hit your server with a Stormpath SDK integration installed. This article shows you how to do just that in an Ionic application.
176
 
176
 
177
-Install the [Angular components for Stormpath](https://github.com/stormpath/stormpath-sdk-angular):
177
+## Upgrade to Angular 2.3
178
 
178
 
179
-```
180
-yarn add angular-stormpath
179
+With Angular versions less than 2.3, you can’t extend components and override their templates. The Ionic pages for Stormpath module uses component extension to override the templates in its pages. Because of this, you have to upgrade your project to use Angular 2.3. The only downside to use Angular 2.3 with Ionic 2.0.0 is that you won’t be able to use the `--prod` build flag when compiling. This is because its compiler does not support Angular 2.3. 
180
+
181
+To begin, modify `package.json` so all the `angular` dependencies use version `2.3.1` rather than `2.2.1`. 
182
+
183
+```json
184
+"dependencies": {
185
+  "@angular/common": "2.3.1",
186
+  "@angular/compiler": "2.3.1",
187
+  "@angular/compiler-cli": "2.3.1",
188
+  "@angular/core": "2.3.1",
189
+  "@angular/forms": "2.3.1",
190
+  "@angular/http": "2.3.1",
191
+  "@angular/platform-browser": "2.3.1",
192
+  "@angular/platform-browser-dynamic": "2.3.1",
193
+  "@angular/platform-server": "2.3.1",
194
+  ...
181
 ```
195
 ```
182
 
196
 
183
-Modify `app.module.ts` to import the appropriate Stormpath classes from `angular-stormpath`. Create a function to configure the `endpointPrefix` to point to the DNS label for your Client API instance. 
197
+Run `npm install` to update to these versions.
184
 
198
 
185
-**NOTE:** You can find and configure your DNS label by logging into https://api.stormpath.com and navigating to Applications > My Application > Policies > Client API > DNS Label. Since mine is “raible”, I’ll be using `raible.apps.stormpath.io` for this example.
199
+## Install Ionic Pages for Stormpath
186
 
200
 
187
-Make sure to define `stormpathConfig`, override the provider, import `StormpathModule` / `StormpathIonicModule`, and append Stormpath's pre-built Ionic pages to `entryComponents`.
201
+Install [Ionic pages for Stormpath](https://github.com/stormpath/stormpath-sdk-angular-ionic):
188
 
202
 
203
+```
204
+yarn add angular-stormpath-ionic
205
+```
206
+
207
+Modify `src/app/app.module.ts` to define a `stormpathConfig` function. This function is used to configure the `endpointPrefix` to point to the DNS label for your Client API instance. Import `StormpathModule`, `StormpathIonicModule`, and override the instance of `StormpathConfiguration`. You’ll also need to append Stormpath's pre-built Ionic pages to `entryComponents`.
208
+
209
+**NOTE:** You can find and configure your DNS label by logging into https://api.stormpath.com and navigating to Applications > My Application > Policies > Client API > DNS Label. Since mine is “raible”, I’ll be using `raible.apps.stormpath.io` for this example.
189
 
210
 
190
 ```typescript
211
 ```typescript
191
-import {
192
-  StormpathConfiguration, StormpathModule, StormpathIonicModule,
193
-  LoginPage, RegisterPage, ForgotPasswordPage
194
-} from 'angular-stormpath';
212
+import { StormpathConfiguration, StormpathModule } from 'angular-stormpath';
213
+import { StormpathIonicModule, LoginPage, ForgotPasswordPage, RegisterPage } from 'angular-stormpath-ionic';
195
 
214
 
196
 export function stormpathConfig(): StormpathConfiguration {
215
 export function stormpathConfig(): StormpathConfiguration {
197
   let spConfig: StormpathConfiguration = new StormpathConfiguration();
216
   let spConfig: StormpathConfiguration = new StormpathConfiguration();
221
 export class AppModule {}
240
 export class AppModule {}
222
 ```
241
 ```
223
 
242
 
224
-To render a login page before users can view the application, you can modify `src/app/app.component.ts` to use the `Stormpath` service and navigate to Stormpath's `LoginPage` if the user is not authenticated. 
243
+To render a login page before users can view the application, modify `src/app/app.component.ts` to use the `Stormpath` service and navigate to Stormpath's `LoginPage` if the user is not authenticated. 
225
 
244
 
226
 ```typescript
245
 ```typescript
227
 import { Component } from '@angular/core';
246
 import { Component } from '@angular/core';
228
 import { Platform } from 'ionic-angular';
247
 import { Platform } from 'ionic-angular';
229
 import { StatusBar, Splashscreen } from 'ionic-native';
248
 import { StatusBar, Splashscreen } from 'ionic-native';
230
 import { TabsPage } from '../pages/tabs/tabs';
249
 import { TabsPage } from '../pages/tabs/tabs';
231
-import { Stormpath, LoginPage } from 'angular-stormpath';
250
+import { Stormpath } from 'angular-stormpath';
251
+import { LoginPage } from 'angular-stormpath-ionic';
232
 
252
 
233
 @Component({
253
 @Component({
234
   templateUrl: 'app.html'
254
   templateUrl: 'app.html'

+ 10
- 10
client/package.json View File

10
     "ionic:serve": "ionic-app-scripts serve"
10
     "ionic:serve": "ionic-app-scripts serve"
11
   },
11
   },
12
   "dependencies": {
12
   "dependencies": {
13
-    "@angular/common": "2.2.1",
14
-    "@angular/compiler": "2.2.1",
15
-    "@angular/compiler-cli": "2.2.1",
16
-    "@angular/core": "2.2.1",
17
-    "@angular/forms": "2.2.1",
18
-    "@angular/http": "2.2.1",
19
-    "@angular/platform-browser": "2.2.1",
20
-    "@angular/platform-browser-dynamic": "2.2.1",
21
-    "@angular/platform-server": "2.2.1",
13
+    "@angular/common": "2.3.1",
14
+    "@angular/compiler": "2.3.1",
15
+    "@angular/compiler-cli": "2.3.1",
16
+    "@angular/core": "2.3.1",
17
+    "@angular/forms": "2.3.1",
18
+    "@angular/http": "2.3.1",
19
+    "@angular/platform-browser": "2.3.1",
20
+    "@angular/platform-browser-dynamic": "2.3.1",
21
+    "@angular/platform-server": "2.3.1",
22
     "@ionic/storage": "1.1.7",
22
     "@ionic/storage": "1.1.7",
23
-    "angular-stormpath": "^0.1.5",
23
+    "angular-stormpath-ionic": "^0.0.3",
24
     "ionic-angular": "2.0.0",
24
     "ionic-angular": "2.0.0",
25
     "ionic-native": "2.4.1",
25
     "ionic-native": "2.4.1",
26
     "ionicons": "3.0.0",
26
     "ionicons": "3.0.0",