Authentication service.

Er zijn een aantal verschillende manieren om authenticatie toe te voegen aan een Angular-applicatie. Eén van de meest populaire tools is Passport.js, maar er is geen eenvoudige manier om Passport.js te implementeren zonder backend zoals Express.js en Node.js.

Gelukkig biedt Firebase een authenticatie-oplossing die je rechtstreeks binnen Angular kan gebruiken.
Omdat Firebase het zware werk voor ons doet, hoeven we ons geen zorgen te maken over het coderen van wachtwoorden en het opslaan van gevoelige gebruikersinformatie.

Begin met het toevoegen van Firebase-authenticatie. In een later stadium kan je bepaalde routes afschermen zodat alleen geverifieerde gebruikers de inhoud kunnen zien en/of aanpassen.

Laat ons eerst even bestuderen wat we van Firebase terug krijgen. Dat maakt het al een stuk eenvoudiger om de code die volgt beter te begrijpen. Firebase geeft de authState terug in de vorm van een observable. Is de gebruiker ingelogd, dan is de authState een JSON-object. Is hij niet ingelogd, dan krijg je null terug.

Binnen Firebase kan je je op verschillende manieren aanmelden. De JSON-structuur van de authState is steeds hetzelfde. De belangrijkste verschillen zijn:


        

        

        

        

Schema aanmaken.

Omdat je de service, met het bijbehorende schema, op meerdere plaatsen in de toepassing gaat gebruiken (in de navbar, op de loginpagina, op de chat-pagina, ...) kan je de service best buiten de bestaande modules plaatsen. Bijvoorbeeld in de map shared.

In het schema neem je enkel de velden op die voor onze toepassing relevant zijn. Misschien ga je in een later stadium deze gegevens in een database bewaren zodat de gebruiker zelf zijn profiel kan aanpassen. Misschien heeft niet elke gebruiker dezelfde rechten op de site. Je hebt bijvoorbeeld sitebeheerders en gewone gebruikers. Daar kan je dan extra velden in het schema toevoegen.

Auth service aanmaken.

De aurhService is de centrale plaats waar de volledige authenticatie gebeurt. Een gebruiker kan zich aanmelden, inloggen, uitloggen en zijn paswoord resetten. Alle gegevens die je verder in de applicatie nodig hebt, worden ook hier bewaard. Door alles hier centraal te bewaren, hoef je geen ingewikkelde logica op de andere componenten te gebruiken.

Alle communicatie tussen Firebase en Angular gebeurt via methodes uit AngularFire2. Enkel voor de social logins heb je de firebase-class zelf nodig.