maen-bn/openamauth

View on GitHub
README.md

Summary

Maintainability
Test Coverage
# OpenAM Authentication 
[![Build Status](https://travis-ci.org/maen-bn/openamauth.svg?branch=4.0)](https://travis-ci.org/maen-bn/openamauth)
[![Codecov](https://img.shields.io/codecov/c/github/maen-bn/openamauth.svg)](https://codecov.io/gh/maen-bn/openamauth)
[![Code Climate](https://img.shields.io/codeclimate/github/maen-bn/openamauth.svg)](https://codeclimate.com/github/maen-bn/openamauth)
[![Code Climate](https://img.shields.io/codeclimate/issues/github/maen-bn/openamauth.svg)](https://codeclimate.com/github/maen-bn/openamauth)
[![Packagist](https://img.shields.io/packagist/v/maenbn/openamauth.svg)](https://packagist.org/packages/maenbn/openamauth)
[![Packagist](https://img.shields.io/packagist/dt/maenbn/openamauth.svg)](https://packagist.org/packages/maenbn/openamauth)

This is a PHP library for authenticating users via OpenAM

## NOTE: Usage with Laravel

This package has been changed to be framework agnostic. If you're using **Laravel 5.1** then continue to use **v1.1.*** 
 of this package. For later versions of Laravel, a new separate package for Laravel will be created using this package
 as it's core logic. More information will follow.


## Installation

The tool requires you have [PHP](https://php.net) 5.6.*+ and [Composer](https://getcomposer.org).

You will also need a [OpenAM](http://openam.forgerock.org/) server.

To install the package run the following composer command 

``` bash
composer require maenbn/openamauth
```

## Usage
### Setup

To setup an OpenAm object you will need to initialise a config object and pass that to the OpenAm factory:
 
 ```php
 // Construct parameters are address of your OpenAm server, realm (optional), deploy URI (optional)
 $config = new \Maenbn\OpenAmAuth\Config('https://myopenam.com', 'people', 'openam');
 // OpenAm instance
 $openAm = \Maenbn\OpenAmAuth\Factories\OpenAmFactory::create($config);
 ```
 
 ### Authenticating and retrieving the return token ID
 ```php
 if($openAm->authenticate('username', 'password'){
    $tokenId = $openAm->getTokenId();
    // Further successful authenication logic ...
 }
 ```
 
### Validate Token
If an OpenAm instance has ran a successful ```authenticate``` during the current runtime then you can validate
the token id without having to set a token ID on the instance. Other wise use the ```setTokenId``` setter before 
validating.

```php
// Returns a bool or throws and exception if not token ID is set
$valid = $openAm->setToken($tokenId)->validateTokenId();
```

### Getting users details 

If an OpenAm instance has ran a successful ```authenticate``` during the current runtime then you can get the users
 details return from OpenAM without having to set a token ID and the user ID. Other wise use the ```setTokenId``` 
 and ```setUid``` setters before running the ```setUser``` then ```getUser```.
  
 ```php
// Returns a stdClass with the user's details or null if the token ID and user ID have not been set
   $user = $openAm->setToken($tokenId)->setUid($uid)->setUser()->getUser();
   
// If successful authenicate has been ran
 if($openAm->authenticate('username', 'password'){
    $user = $openAm->getUser();
    // Further successful authenication logic ...
}
```

### Logging out
If an OpenAm instance has ran a successful ```authenticate``` during the current runtime then you can logout without 
having to set a token ID. Other wise use the ```setTokenId``` setter before logging out a user.

```php
// Return a bool based of success of log out
$openAm->setTokenId($tokenId)->logout();
```

### Accessing Config object via OpenAm object
When the ```Config``` object is injected into the constructor of ```OpenAm``` it'll modify the ```cookieName``` and
```cookieSecure``` property on ```Config``` if they're set to ```null```. This is done by retrieving this information 
from the OpenAm server. Obviously you may want to retrieve this data in order to set a cookie on your app correctly. 
Therefore you can access the ```Config``` object via the ```OpenAm``` object via the getter:

 ```php
 // Will return Config object
$config = $openAm->getConfig();

$cookieName = $config->getCookieName();
$cookieSecure = $cofig->getCookieSecure();
```