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
|
||||
|
||||
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
|
||||
|
|
|
@ -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;
|
||||
|
||||
/** @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;
|
||||
}
|
||||
|
||||
}
|
||||
|
|
|
@ -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
|
||||
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]);
|
||||
}
|
||||
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue