Add App permissions infos

This commit is contained in:
alphayax 2016-06-23 13:31:34 +02:00
parent 72d1a00cba
commit 7619351a35
5 changed files with 98 additions and 17 deletions

View File

@ -39,6 +39,11 @@ Un document complet repertorie l'ensemble des services implémentées : [service
### Application
L'objet `\alphayax\freebox\utils\Application` représente votre application. Vous devrez
créer une instance de cette classe et la transmettre aux services que vous souhaitez utiliser.
#### Association
Pour acceder aux services proposés par l'API de la freebox, vous deverez
autoriser votre application. Cette procedure impose que vous soyez connecté
au réseau local de votre Freebox lors de "l'association" et que vous ayez la
@ -61,6 +66,26 @@ $App->authorize();
$App->openSession();
```
#### Accès local
L'accès local est activé par défaut. Une fois l'application créer et la session ouverte, vous
pouvez utiliser directement les services auquels l'application à acces.
#### Accès distant
Pour pouvoir utiliser l'accès distant, il vous faudra le token associé a votre application.
Ce token s'obtient automatiquement après l'association faite via l'appel à la méthode `authorize()`.
Le token est ecrit dans le fichier `app_token`. Il est également disponible via la methode `\alphayax\freebox\utils\Application::getAppToken()`.
Une fois le token obtenu, vous pouvez proceder comme suit :
```php
$App = new \alphayax\freebox\utils\Application( 'com.alphayax.freebox.version', 'Freebox PHP API Example (Version)', '1.0.0');
$App->setFreeboxApiHost( 'https://xxx.freeboxos.fr:17105'); // A remplacer par votre host
$App->setAppToken( 'xxxxxxxxxxxxxxxxxxxx'); // A remplacer par votre token
$App->openSession();
```
### Services
Les appels aux services de l'API se font par l'intermédiaire de services.
Ces derniers possedent les méthodes pour récuperer, ajouter ou mettre a jour des données.
@ -73,8 +98,6 @@ Voici un exemple d'utilisation de l'API System :
```php
$System = new \alphayax\freebox\api\v3\services\config\System( $App);
/** @var \alphayax\freebox\api\v3\models\SystemConfig $SystemConfig */
$SystemConfig = $System->getConfiguration();
print_r( $SystemConfig);
@ -98,21 +121,6 @@ alphayax\freebox\api\v3\models\SystemConfig Object
)
```
### Accès distant
Pour pouvoir utiliser l'accès distant, il vous faudra le token associé a votre application.
Ce token s'obtient automatiquement après l'association faite via l'appel à la méthode `authorize()`.
Le token est ecrit dans le fichier `app_token`. Il est également disponible via la methode `\alphayax\freebox\utils\Application::getAppToken()`.
Une fois le token obtenu, vous pouvez proceder comme suit :
```php
$App = new \alphayax\freebox\utils\Application( 'com.alphayax.freebox.version', 'Freebox PHP API Example (Version)', '1.0.0');
$App->setFreeboxApiHost( 'https://xxx.freeboxos.fr:17105'); // A remplacer par votre host
$App->setAppToken( 'xxxxxxxxxxxxxxxxxxxx'); // A remplacer par votre token
$App->openSession();
```
## Exemples
Les exemples sont disponibles dans le repertoire `exemple`. Ils sont classés par services :
@ -147,3 +155,5 @@ Les exemples sont disponibles dans le repertoire `exemple`. Ils sont classés pa
- `Storage`
- `Disk` : Retourne des informations sur les disques connectés aux freebox
- `Partition` : Retourne des infos sur ces disques. Possibilité de verification ou de formatage
- `remote` : Un exemple de connexion distant
- `version` : Affichage de la version de l'API de la freebox

13
exemple/permissions.php Normal file
View File

@ -0,0 +1,13 @@
<?php
/// Require Composer AutoLoader
require_once '../vendor/autoload.php';
/// Define our application
$App = new \alphayax\freebox\utils\Application( 'com.alphayax.freebox.permission', 'PHP API Example (permission)', '1.0.0');
$App->authorize();
$App->openSession();
$hasExplorerPermission = $App->hasPermission( \alphayax\freebox\api\v3\symbols\Permissions::EXPLORER);
var_dump( $hasExplorerPermission);

View File

@ -21,7 +21,10 @@ class Session extends Service {
private $logged_in = false;
/** @var array */
protected $permissions = [];
/** @var string */
private $session_token;
/**
@ -52,6 +55,7 @@ class Session extends Service {
throw new \Exception( $rest->getCurlResponse()['error_code'] .' : '. $rest->getCurlResponse()['msg']);
}
$this->session_token = $rest->getResult()['session_token'];
$this->permissions = $rest->getResult()['permissions'];
}
/**
@ -61,4 +65,11 @@ class Session extends Service {
return $this->session_token;
}
/**
* @return array
*/
public function getPermissions() {
return $this->permissions;
}
}

View File

@ -0,0 +1,30 @@
<?php
namespace alphayax\freebox\api\v3\symbols;
/**
* Symbol Permissions
* @package alphayax\freebox\api\v3\symbols
*/
interface Permissions {
/** Allow modifying the Freebox settings (reading settings is always allowed) */
const SETTINGS = 'settings';
/** Access to contact list */
const CONTACTS = 'contacts';
/** Access to call logs */
const CALLS = 'calls';
/** Access to filesystem */
const EXPLORER = 'explorer';
/** Access to downloader */
const DOWNLOADER = 'downloader';
/** Access to parental control */
const PARENTAL = 'parental';
/** Access personal video recorder */
const PVR = 'pvr';
}

View File

@ -13,6 +13,12 @@ class Application {
/// Freebox API host URI
const API_HOST_LOCAL = 'http://mafreebox.freebox.fr';
/**
* @var array
* @see alphayax\freebox\api\v3\symbols\Permissions
*/
protected $permissions = [];
/** @var string */
private $id = '';
@ -81,6 +87,7 @@ class Application {
$Login->ask_login_status();
$Login->create_session();
$this->permissions = $Login->getPermissions();
$this->session_token = $Login->getSessionToken();
}
@ -158,4 +165,14 @@ class Application {
return $this->logger;
}
/**
* Return true if the application have access to the given permission name
* @param $permissionName
* @see alphayax\freebox\api\v3\symbols\Permissions
* @return bool
*/
public function hasPermission( $permissionName) {
return boolval( @$this->permissions[$permissionName]);
}
}