Extends the WP REST API using JSON Web Tokens as an authentication method. GS JWT plugin provides to encode and decode JSON Web Tokens (JWT), conforming to RFC 7519.
GET OTP and send notification by mail or SMS service
Support and Requests please in Github: https://github.com/gauravin213/gs-jwt
Minimum PHP version: 5.3.0
Most of the shared hosting has disabled the HTTP Authorization Header by default.
To enable this option you'll need to edit your .htaccess file adding the following
RewriteEngine on
RewriteCond %{HTTP:Authorization} ^(.*)
RewriteRule ^(.*) - [E=HTTP_AUTHORIZATION:%1]
To enable this option you'll need to edit your .htaccess file adding the following
SetEnvIf Authorization "(.*)" HTTP_AUTHORIZATION=$1
The JWT needs to Add constant in the wp-confige.php file
define( 'GS_WP_JWT_SECRET_KEY', 'your-top-secret-key' );
define( 'GS_WP_JWT_ALGO', 'HS256' );
define( 'GS_WP_JWT_EXPIRY', (60 * 60) ); //seconds * minuts
define( 'GS_WP_OTP_EXPIRY', 10); //minuts
When the plugin is activated, a new namespace is added
/gs-jwt/v1
Also, two new endpoints are added to this namespace
Endpoint | HTTP Verb
/wp-json/gs-jwt/v1/login | POST
/wp-json/gs-jwt/v1/token/validate | POST
/wp-json/gs-jwt/v1/get-otp | POST
/wp-json/gs-jwt/v1/verify-otp | POST
/wp-json/gs-jwt/v1/register_user | POST
/wp-json/gs-jwt/v1/register_userbymobile | POST
- Get JSON web token
POST /wp-json/gs-jwt/v1/login
Body{
"username": "enter username",
"password": "enter password"
}
{
"data": {
"id": "1",
"user_login": "admin",
"user_pass": null,
"user_nicename": "admin",
"user_email": "example@gmail.com",
"user_url": "",
"user_registered": "2020-08-11 07:35:37",
"user_activation_key": "",
"user_status": "0",
"display_name": "admin",
"roles": [
"administrator"
],
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8xMjcuMC4wLjFcL3dvcmRwcmVzcyIsImlhdCI6MTY0MTk3MDIwNSwibmJmIjoxNjQxOTcwMjA1LCJleHAiOjE2NDE5NzM4MDUsImRhdGEiOnsidXNlciI6eyJpZCI6IjEifX19.gRF_aNsmhQ8kqXYdKbm6dIA7zTlhcCU-e_cpP9pQDyM"
}
}
- Validate JSON web token
POST /wp-json/gs-jwt/v1/token/validate
Make a POST request sending the Authorization header
Authorization: Bearer eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8xMjcuMC4wLjFcL3dvcmRwcmVzcyIsImlhdCI6MTY0MTk3MDIwNSwibmJmIjoxNjQxOTcwMjA1LCJleHAiOjE2NDE5NzM4MDUsImRhdGEiOnsidXNlciI6eyJpZCI6IjEifX19.gRF_aNsmhQ8kqXYdKbm6dIA7zTlhcCU-e_cpP9pQDyM
{
"code": "jwt_auth_valid_token",
"data": {
"status": 200
}
}
- Get otp by billing mobile number
POST /wp-json/gs-jwt/v1/get-otp
Body{
"mobile": "enter mobile number"
}
{
"data": {
"otp": 249225,
"message": "SUCCESS",
"otp_use_staus": "0",
"notification": {
"mail_send_status": 0,
"sms_send_status": 0
}
}
}
- Verify otp and mobile number to login
POST /wp-json/gs-jwt/v1/verify-otp
Body{
"otp": "enter otp",
"mobile": "enter mobile number"
}
{
"data": {
"id": "1",
"user_login": "admin",
"user_pass": null,
"user_nicename": "admin",
"user_email": "example@gmail.com",
"user_url": "",
"user_registered": "2020-08-11 07:35:37",
"user_activation_key": "",
"user_status": "0",
"display_name": "admin",
"roles": [
"administrator"
],
"token": "eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiJodHRwOlwvXC8xMjcuMC4wLjFcL3dvcmRwcmVzcyIsImlhdCI6MTY0MTk3MDIwNSwibmJmIjoxNjQxOTcwMjA1LCJleHAiOjE2NDE5NzM4MDUsImRhdGEiOnsidXNlciI6eyJpZCI6IjEifX19.gRF_aNsmhQ8kqXYdKbm6dIA7zTlhcCU-e_cpP9pQDyM"
}
}
- Register user
POST /wp-json/gs-jwt/v1/register_user
Body{
"username": "example",
"password": "example@123",
"email": "example@gmail.com",
"mobile": "1122336699"
}
{
"data": {
"id": 29,
"user_login": "example",
"user_pass": null,
"user_nicename": "example",
"user_email": "example@gmail.com",
"user_url": "",
"user_registered": "2022-01-12 07:45:29",
"user_activation_key": "",
"user_status": "0",
"display_name": "example",
"roles": [
"customer"
],
"billing_phone": "1122336699"
},
"code": 200,
"message": "Registration was Successful"
}
- Register user by mobile number
POST /wp-json/gs-jwt/v1/register_userbymobile
Body{
"mobile": "1122336699"
}
{
"data": {
"id": 32,
"user_login": "1144556638",
"user_nicename": "1144556638",
"user_registered": "2022-01-13 06:29:30",
"display_name": "1144556638",
"roles": [
"customer"
],
"billing_phone": "1144556638"
},
"code": 200,
"message": "Registration was Successful"
}
/*
* Send notification
* Default mail_send_status = 0, sms_send_status = 0
*/
function gs_wp_jwt_send_notification_fun( $data, $user_id, $otp, $mobile ) {
//Write mail send code here
$from = get_option('admin_email');
$to = get_user_meta($user_id, 'billing_email', true);
$subject = "OTP Verification";
$message = "OTP number: {$opt} will expire in 10 min";
$headers = "From: ".$from;
$result = wp_mail( $to, $subject, $message, $headers);
if ($result) {
$data['mail_send_status'] = 1;
} //end mail send
//Write sms send api code here
/*if ($sms_send_status) {
$data['sms_send_status'] = 1;
} //ens sms send*/
return $data;
}
add_filter( 'gs_wp_jwt_send_notification', 'gs_wp_jwt_send_notification_fun', 10, 4 );