This is an old revision of the document!
Vouchers
- Vouchers are a once off way to give someone access to the Internet.
- With a voucher you don't care who are using it and we thus do not record any personal information with a voucher.
- A Voucher has to belong to a Profile and Realm in order to be useful to RADIUS.
- There are dedicated Wiki Pages that cover adding a Profile and a Realm.
- In this page we will show you how to add a Voucher to a Cloud in RADIUSdesk using an API call.
- We will use PHP but the principles can be applied using any programming language.
Options available when creating vouchers
- There are two classes of vouchers.
- Single Field - Username and Password are of the same value and typically an easy to remember compound word.
- Username and Password - Username and Password are different where the username is easy to remember but the password is a random generated string.
- There is the option to create a single voucher or a batch of vouchers.
- Batches will be grouped by a batch name.
- Activate and Expire
- By default a voucher never expires.
- One can specify an expiry date where-after the voucher can not be used.
- There is also the option to activate the voucher when a user logs in for the first time.
- These type of vouchers are time based and you can specify the how long after the first login the voucher expires.
- Extra Fields
- There are an optional Extra field name and Extra field value that can be used to store extra information.
Add a single voucher using the API
- When using the API to generate vouchers you have the option to create a single voucher or a batch of vouchers.
- Here we will cover the API call to create a single voucher.
- add_single_voucher.php
<?php // Configuration $api_url = 'http://127.0.0.1/cake4/rd_cake/permanent-users/add.json'; $token = 'b4c6ac81-8c7c-4802-b50a-0a6380555b50'; $cloud_id = 23; // replace with the Cloud ID that you want to work on. $username = 'testuser'; $password = 'testing123'; $realm = 'Dev'; $profile = 'MzanziFibre-12/1'; // Set API payload $payload = [ //Required Fields 'username' => $username, 'password' => $password, 'realm' => $realm, 'profile' => $profile, 'cloud_id' => $cloud_id, 'token' => $token, 'active' => 'active', //active flag must be set for user to authenticate /* //Optional Fields 'name' => '', 'surname' => '', 'phone' => '', 'email' => '', 'address' => '', 'from_date' => '04/12/2025', 'to_date' => ''04/12/2026', 'realm_id' => 19, //Alternative to Realm's name 'profile_id' => 49, //Alternative to Profile's name 'static_ip' => '192.168.1.100' 'extra_name' => '', 'extra_value' => '', 'site' => '', 'ppsk' => '', 'auto_add' => 'auto_add' //flag to automatically add the MAC Address the user connects with as a Device (BYOD) belonging to him */ ]; $json_payload = json_encode($payload); $ch = curl_init($api_url); curl_setopt($ch, CURLOPT_RETURNTRANSFER, true); curl_setopt($ch, CURLOPT_POST, true); curl_setopt($ch, CURLOPT_POSTFIELDS, $json_payload); curl_setopt($ch, CURLOPT_HTTPHEADER, array('Content-Type: application/json')); $response = curl_exec($ch); curl_close($ch); echo "Added $username: $response\n"; ?>
- Now that we have created a Permanent User, we will cover some common actions that can be done on the Permanent User via the API.