I have been working a lot on my basics sample project to explore some new client-side frameworks (React and Vue if you are interested). Since I have been away from the Identity Server sample for a while I thought it would be good to see what updates the project might need. It turns out that Angular was the big thing that was out of date. This post is going to cover the changes to get the project updated to Angular 5.
Package.json
In the Client App project open the package.json file and update the version of the @angular packages to at least the following version, and of course feel free to pin the exact version. I don’t just because of the nature of this sample.
"@angular/animations": "^5.0.0", "@angular/common": "^5.0.0", "@angular/compiler": "^5.0.0", "@angular/compiler-cli": "^5.0.0", "@angular/core": "^5.0.0", "@angular/forms": "^5.0.0", "@angular/http": "^5.0.0", "@angular/platform-browser": "^5.0.0", "@angular/platform-browser-dynamic": "^5.0.0", "@angular/platform-server": "^5.0.0", "@angular/router": "^5.0.0"
At this point, I tried to run and got an error about the version of rxjs being used. Instead of just blindly going package by package and seeing which versions were required I installed the Angular CLI and created a new Angular 5 application and used it as an example of what version I needed. Use the following commands if you would like to follow the same process since the current versions have changed by the time you are reading this post.
npm install -g @angular/cli ng new sample-app
The above led me to the following version changes.
"rxjs": "^5.5.2", "zone.js": "^0.8.14"
Attempt 2
At this point, I tried running the application again and received the following error.
Error: Version of @angular/compiler-cli needs to be 2.3.1 or greater. Current version is “5.0.1”.
As you can imagine I was surprised that 5.0.1 < 2.3.1. Turns out this is related to the version of @ngtools/webpack. This package deals with ahead-of-time compiling which my sample application uses, but the application I generated using the Angular CLI doesn’t. Updating to the following version cleared up the issue.
"@ngtools/webpack": "^1.8.0"
Open ID Connect Client
There was a much new version of the Open ID Connect Client that the Angular application is using so I upgrade it as well to the following version.
"angular-auth-oidc-client": "3.0.4"
This version dropped the startup_route so the following line had to be removed from the AuthService class.
openIdImplicitFlowConfiguration.startup_route = '/home';
Final Steps
Now that the package versions are sorted run the following commands from a command prompt to make sure that all the new version are installed and in the proper places.
npm install node node_modules/webpack/bin/webpack.js --config webpack.config.vendor.js node node_modules/webpack/bin/webpack.js
Wrapping Up
I am glad to have this upgrade done. It seems that every time I do one of these upgrades I end up down some rabbit hole. On the plus side, I seem to be getting faster at resolving the rabbit hole issues, or the frameworks have made a lot of progress on making sure the upgrade processes are simpler than they used to be. Either way, I get to expand my knowledge. I just need to schedule a bit more time before attempting upgrades.
The code in its finished state can be found here.
Also published on Medium.
openIdImplicitFlowConfiguration.startup_route was renamed to post_login_route, breaking change.
You can also consume an onAuthorizationResult event instead, if you want.
I try to keep the API docs up to date.
https://github.com/damienbod/angular-auth-oidc-client/blob/master/API_DOCUMENTATION.md
Thanks for the post.
Greetings Damien
Awesome. Thanks, Damien!