Add App permissions infos
This commit is contained in:
parent
72d1a00cba
commit
7619351a35
44
README.md
44
README.md
|
@ -39,6 +39,11 @@ Un document complet repertorie l'ensemble des services implémentées : [service
|
||||||
|
|
||||||
### Application
|
### 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
|
Pour acceder aux services proposés par l'API de la freebox, vous deverez
|
||||||
autoriser votre application. Cette procedure impose que vous soyez connecté
|
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
|
au réseau local de votre Freebox lors de "l'association" et que vous ayez la
|
||||||
|
@ -61,6 +66,26 @@ $App->authorize();
|
||||||
$App->openSession();
|
$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
|
### Services
|
||||||
Les appels aux services de l'API se font par l'intermédiaire de 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.
|
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
|
```php
|
||||||
$System = new \alphayax\freebox\api\v3\services\config\System( $App);
|
$System = new \alphayax\freebox\api\v3\services\config\System( $App);
|
||||||
|
|
||||||
/** @var \alphayax\freebox\api\v3\models\SystemConfig $SystemConfig */
|
|
||||||
$SystemConfig = $System->getConfiguration();
|
$SystemConfig = $System->getConfiguration();
|
||||||
|
|
||||||
print_r( $SystemConfig);
|
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
|
## Exemples
|
||||||
|
|
||||||
Les exemples sont disponibles dans le repertoire `exemple`. Ils sont classés par services :
|
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`
|
- `Storage`
|
||||||
- `Disk` : Retourne des informations sur les disques connectés aux freebox
|
- `Disk` : Retourne des informations sur les disques connectés aux freebox
|
||||||
- `Partition` : Retourne des infos sur ces disques. Possibilité de verification ou de formatage
|
- `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
|
||||||
|
|
|
@ -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);
|
|
@ -21,7 +21,10 @@ class Session extends Service {
|
||||||
|
|
||||||
private $logged_in = false;
|
private $logged_in = false;
|
||||||
|
|
||||||
|
/** @var array */
|
||||||
|
protected $permissions = [];
|
||||||
|
|
||||||
|
/** @var string */
|
||||||
private $session_token;
|
private $session_token;
|
||||||
|
|
||||||
/**
|
/**
|
||||||
|
@ -52,6 +55,7 @@ class Session extends Service {
|
||||||
throw new \Exception( $rest->getCurlResponse()['error_code'] .' : '. $rest->getCurlResponse()['msg']);
|
throw new \Exception( $rest->getCurlResponse()['error_code'] .' : '. $rest->getCurlResponse()['msg']);
|
||||||
}
|
}
|
||||||
$this->session_token = $rest->getResult()['session_token'];
|
$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 $this->session_token;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @return array
|
||||||
|
*/
|
||||||
|
public function getPermissions() {
|
||||||
|
return $this->permissions;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
|
@ -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';
|
||||||
|
}
|
|
@ -13,6 +13,12 @@ class Application {
|
||||||
/// Freebox API host URI
|
/// Freebox API host URI
|
||||||
const API_HOST_LOCAL = 'http://mafreebox.freebox.fr';
|
const API_HOST_LOCAL = 'http://mafreebox.freebox.fr';
|
||||||
|
|
||||||
|
/**
|
||||||
|
* @var array
|
||||||
|
* @see alphayax\freebox\api\v3\symbols\Permissions
|
||||||
|
*/
|
||||||
|
protected $permissions = [];
|
||||||
|
|
||||||
/** @var string */
|
/** @var string */
|
||||||
private $id = '';
|
private $id = '';
|
||||||
|
|
||||||
|
@ -81,6 +87,7 @@ class Application {
|
||||||
$Login->ask_login_status();
|
$Login->ask_login_status();
|
||||||
$Login->create_session();
|
$Login->create_session();
|
||||||
|
|
||||||
|
$this->permissions = $Login->getPermissions();
|
||||||
$this->session_token = $Login->getSessionToken();
|
$this->session_token = $Login->getSessionToken();
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -158,4 +165,14 @@ class Application {
|
||||||
return $this->logger;
|
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]);
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue