diff --git a/src/app/Http/Controllers/API/V4/OpenViduController.php b/src/app/Http/Controllers/API/V4/OpenViduController.php index 96cc9e84..94aaa45c 100644 --- a/src/app/Http/Controllers/API/V4/OpenViduController.php +++ b/src/app/Http/Controllers/API/V4/OpenViduController.php @@ -1,120 +1,121 @@ user(); - $room = \App\OpenVidu\Room::where('session_id', $id); + $room = \App\OpenVidu\Room::where('session_id', $id)->first(); // see if room exists, return session and token $client = new \GuzzleHttp\Client( [ + 'http_errors' => false, // No exceptions from Guzzle 'base_uri' => \config('openvidu.api_url'), 'verify' => \config('openvidu.api_verify_tls') ] ); $response = $client->request( 'GET', "sessions/{$id}", ['auth' => [\config('openvidu.api_username'), \config('openvidu.api_password')]] ); $sessionExists = $response->getStatusCode() == 200; if (!$sessionExists) { - if ($room->user_id == $user) { + if ($room->user_id == $user->id) { $json = [ 'mediaMode' => 'ROUTED', 'recordingMode' => 'MANUAL', 'customSessionId' => $room->session_id ]; $response = $client->request( 'POST', 'sessions', [ 'auth' => [ \config('openvidu.api_username'), \config('openvidu.api_password') ], 'json' => [ 'mediaMode' => 'ROUTED', 'recordingMode' => 'MANUAL', 'customSessionId' => $room->session_id ] ] ); - if ($response->getResponseCode() !== 200) { + if ($response->getStatusCode() !== 200) { return response()->json(['status' => 'error'], 422); } $response = $client->request( 'POST', 'tokens', [ 'auth' => [ \config('openvidu.api_username'), \config('openvidu.api_password') ], 'json' => [ 'session' => $room->session_id, 'role' => 'MODERATOR' ] ] ); $json = json_decode($response->getBody(), true); return response()->json($json, 200); } else { return response()->json(['status' => 'waiting'], 422); } } $response = $client->request( 'POST', 'tokens', [ 'auth' => [ \config('openvidu.api_username'), \config('openvidu.api_password') ], 'json' => [ 'session' => $room->session_id, 'role' => 'MODERATOR' ] ] ); $json = json_decode($response->getBody(), true); return response()->json($json, 200); } /** * Webhook as triggered from OpenVidu server * * @param \Illuminate\Http\Request $request The API request. * * @return \Illuminate\Http\Response The response */ public function webhook(Request $request) { return response('Success', 200); } } diff --git a/src/config/openvidu.php b/src/config/openvidu.php index 49f8afbd..3aef03a0 100644 --- a/src/config/openvidu.php +++ b/src/config/openvidu.php @@ -1,7 +1,7 @@ env('OPENVIDU_API_PASSWORD', 'MY_SECRET'), 'api_url' => env('OPENVIDU_API_URL', 'https://localhost:4443/api/'), 'api_username' => env('OPENVIDU_API_USERNAME', 'OPENVIDUAPP'), - 'api_verify_tls' => (bool)env('OPENVIDU_API_VERIFY_TLS', 'true') + 'api_verify_tls' => (bool) env('OPENVIDU_API_VERIFY_TLS', true) ]; diff --git a/src/resources/js/routes-user.js b/src/resources/js/routes-user.js index b3d3347d..1165f19e 100644 --- a/src/resources/js/routes-user.js +++ b/src/resources/js/routes-user.js @@ -1,103 +1,103 @@ import DashboardComponent from '../vue/Dashboard' import DomainInfoComponent from '../vue/Domain/Info' import DomainListComponent from '../vue/Domain/List' import Error404Component from '../vue/404' import LoginComponent from '../vue/Login' import LogoutComponent from '../vue/Logout' import MeetComponent from '../vue/Meet' import PasswordResetComponent from '../vue/PasswordReset' import SignupComponent from '../vue/Signup' import UserInfoComponent from '../vue/User/Info' import UserListComponent from '../vue/User/List' import UserProfileComponent from '../vue/User/Profile' import UserProfileDeleteComponent from '../vue/User/ProfileDelete' import WalletComponent from '../vue/Wallet' const routes = [ { path: '/', redirect: { name: 'dashboard' } }, { path: '/dashboard', name: 'dashboard', component: DashboardComponent, meta: { requiresAuth: true } }, { path: '/domain/:domain', name: 'domain', component: DomainInfoComponent, meta: { requiresAuth: true } }, { path: '/domains', name: 'domains', component: DomainListComponent, meta: { requiresAuth: true } }, { path: '/login', name: 'login', component: LoginComponent }, { path: '/logout', name: 'logout', component: LogoutComponent }, { - path: '/meet/:room', + path: '/meet/:room?', name: 'meet', component: MeetComponent, meta: { requiresAuth: true } }, { path: '/password-reset/:code?', name: 'password-reset', component: PasswordResetComponent }, { path: '/profile', name: 'profile', component: UserProfileComponent, meta: { requiresAuth: true } }, { path: '/profile/delete', name: 'profile-delete', component: UserProfileDeleteComponent, meta: { requiresAuth: true } }, { path: '/signup/:param?', alias: '/signup/voucher/:param', name: 'signup', component: SignupComponent }, { path: '/user/:user', name: 'user', component: UserInfoComponent, meta: { requiresAuth: true } }, { path: '/users', name: 'users', component: UserListComponent, meta: { requiresAuth: true } }, { path: '/wallet', name: 'wallet', component: WalletComponent, meta: { requiresAuth: true } }, { name: '404', path: '*', component: Error404Component } ] export default routes diff --git a/src/resources/vue/Dashboard.vue b/src/resources/vue/Dashboard.vue index e7dbc723..2aedc7a6 100644 --- a/src/resources/vue/Dashboard.vue +++ b/src/resources/vue/Dashboard.vue @@ -1,71 +1,71 @@ diff --git a/src/resources/vue/Meet.vue b/src/resources/vue/Meet.vue index 9c1b9a30..65edb591 100644 --- a/src/resources/vue/Meet.vue +++ b/src/resources/vue/Meet.vue @@ -1,78 +1,97 @@ diff --git a/src/routes/api.php b/src/routes/api.php index ff3448ec..cc94aae2 100644 --- a/src/routes/api.php +++ b/src/routes/api.php @@ -1,115 +1,115 @@ 'api', 'prefix' => 'auth' ], function ($router) { Route::post('login', 'API\AuthController@login'); Route::group( ['middleware' => 'auth:api'], function ($router) { Route::get('info', 'API\AuthController@info'); Route::post('logout', 'API\AuthController@logout'); Route::post('refresh', 'API\AuthController@refresh'); } ); } ); Route::group( [ 'domain' => \config('app.domain'), 'middleware' => 'api', 'prefix' => 'auth' ], function ($router) { Route::post('password-reset/init', 'API\PasswordResetController@init'); Route::post('password-reset/verify', 'API\PasswordResetController@verify'); Route::post('password-reset', 'API\PasswordResetController@reset'); Route::get('signup/plans', 'API\SignupController@plans'); Route::post('signup/init', 'API\SignupController@init'); Route::post('signup/verify', 'API\SignupController@verify'); Route::post('signup', 'API\SignupController@signup'); } ); Route::group( [ 'domain' => \config('app.domain'), 'middleware' => 'auth:api', 'prefix' => 'v4' ], function () { Route::apiResource('domains', API\V4\DomainsController::class); Route::get('domains/{id}/confirm', 'API\V4\DomainsController@confirm'); Route::get('domains/{id}/status', 'API\V4\DomainsController@status'); Route::apiResource('entitlements', API\V4\EntitlementsController::class); - Route::get('meet/openvidu/{:id}', 'API\V4\OpenViduController@joinOrCreate'); + Route::get('meet/openvidu/{id}', 'API\V4\OpenViduController@joinOrCreate'); Route::apiResource('packages', API\V4\PackagesController::class); Route::apiResource('skus', API\V4\SkusController::class); Route::apiResource('users', API\V4\UsersController::class); Route::get('users/{id}/status', 'API\V4\UsersController@status'); Route::apiResource('wallets', API\V4\WalletsController::class); Route::get('wallets/{id}/transactions', 'API\V4\WalletsController@transactions'); Route::get('wallets/{id}/receipts', 'API\V4\WalletsController@receipts'); Route::get('wallets/{id}/receipts/{receipt}', 'API\V4\WalletsController@receiptDownload'); Route::post('payments', 'API\V4\PaymentsController@store'); Route::get('payments/mandate', 'API\V4\PaymentsController@mandate'); Route::post('payments/mandate', 'API\V4\PaymentsController@mandateCreate'); Route::put('payments/mandate', 'API\V4\PaymentsController@mandateUpdate'); Route::delete('payments/mandate', 'API\V4\PaymentsController@mandateDelete'); } ); Route::group( [ 'domain' => \config('app.domain'), ], function () { Route::post('webhooks/payment/{provider}', 'API\V4\PaymentsController@webhook'); Route::post('webhooks/meet/openvidu', 'API\V4\OpenViduController@webhook'); } ); Route::group( [ 'domain' => 'admin.' . \config('app.domain'), 'middleware' => ['auth:api', 'admin'], 'prefix' => 'v4', ], function () { Route::apiResource('domains', API\V4\Admin\DomainsController::class); Route::get('domains/{id}/confirm', 'API\V4\Admin\DomainsController@confirm'); Route::apiResource('entitlements', API\V4\Admin\EntitlementsController::class); Route::apiResource('packages', API\V4\Admin\PackagesController::class); Route::apiResource('skus', API\V4\Admin\SkusController::class); Route::apiResource('users', API\V4\Admin\UsersController::class); Route::post('users/{id}/suspend', 'API\V4\Admin\UsersController@suspend'); Route::post('users/{id}/unsuspend', 'API\V4\Admin\UsersController@unsuspend'); Route::apiResource('wallets', API\V4\Admin\WalletsController::class); Route::post('wallets/{id}/one-off', 'API\V4\Admin\WalletsController@oneOff'); Route::get('wallets/{id}/transactions', 'API\V4\Admin\WalletsController@transactions'); Route::apiResource('discounts', API\V4\Admin\DiscountsController::class); } );