Skip to content

Commit 5a78fda

Browse files
committed
Initial commit
0 parents  commit 5a78fda

File tree

166 files changed

+98458
-0
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

166 files changed

+98458
-0
lines changed

.editorconfig

Lines changed: 15 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,15 @@
1+
root = true
2+
3+
[*]
4+
charset = utf-8
5+
end_of_line = lf
6+
insert_final_newline = true
7+
indent_style = space
8+
indent_size = 4
9+
trim_trailing_whitespace = true
10+
11+
[*.md]
12+
trim_trailing_whitespace = false
13+
14+
[*.yml]
15+
indent_size = 2

.env.example

Lines changed: 44 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,44 @@
1+
APP_NAME=Laravel
2+
APP_ENV=local
3+
APP_KEY=
4+
APP_DEBUG=true
5+
APP_URL=http://localhost
6+
7+
LOG_CHANNEL=stack
8+
9+
DB_CONNECTION=mysql
10+
DB_HOST=127.0.0.1
11+
DB_PORT=3306
12+
DB_DATABASE=homestead
13+
DB_USERNAME=homestead
14+
DB_PASSWORD=secret
15+
16+
BROADCAST_DRIVER=log
17+
CACHE_DRIVER=file
18+
QUEUE_CONNECTION=sync
19+
SESSION_DRIVER=file
20+
SESSION_LIFETIME=120
21+
22+
REDIS_HOST=127.0.0.1
23+
REDIS_PASSWORD=null
24+
REDIS_PORT=6379
25+
26+
MAIL_DRIVER=smtp
27+
MAIL_HOST=smtp.mailtrap.io
28+
MAIL_PORT=2525
29+
MAIL_USERNAME=null
30+
MAIL_PASSWORD=null
31+
MAIL_ENCRYPTION=null
32+
33+
AWS_ACCESS_KEY_ID=
34+
AWS_SECRET_ACCESS_KEY=
35+
AWS_DEFAULT_REGION=us-east-1
36+
AWS_BUCKET=
37+
38+
PUSHER_APP_ID=
39+
PUSHER_APP_KEY=
40+
PUSHER_APP_SECRET=
41+
PUSHER_APP_CLUSTER=mt1
42+
43+
MIX_PUSHER_APP_KEY="${PUSHER_APP_KEY}"
44+
MIX_PUSHER_APP_CLUSTER="${PUSHER_APP_CLUSTER}"

.gitattributes

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,5 @@
1+
* text=auto
2+
*.css linguist-vendored
3+
*.scss linguist-vendored
4+
*.js linguist-vendored
5+
CHANGELOG.md export-ignore

.gitignore

Lines changed: 11 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
/node_modules
2+
/public/hot
3+
/public/storage
4+
/storage/*.key
5+
/vendor
6+
.env
7+
.phpunit.result.cache
8+
Homestead.json
9+
Homestead.yaml
10+
npm-debug.log
11+
yarn-error.log

.styleci.yml

Lines changed: 13 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,13 @@
1+
php:
2+
preset: laravel
3+
disabled:
4+
- unused_use
5+
finder:
6+
not-name:
7+
- index.php
8+
- server.php
9+
js:
10+
finder:
11+
not-name:
12+
- webpack.mix.js
13+
css: true

LICENSE

Lines changed: 21 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,21 @@
1+
MIT License
2+
3+
Copyright (c) 2019 Matt Lantz
4+
5+
Permission is hereby granted, free of charge, to any person obtaining a copy
6+
of this software and associated documentation files (the "Software"), to deal
7+
in the Software without restriction, including without limitation the rights
8+
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
9+
copies of the Software, and to permit persons to whom the Software is
10+
furnished to do so, subject to the following conditions:
11+
12+
The above copyright notice and this permission notice shall be included in all
13+
copies or substantial portions of the Software.
14+
15+
THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
16+
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
17+
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
18+
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
19+
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
20+
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
21+
SOFTWARE.

app/Console/Kernel.php

Lines changed: 42 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
<?php
2+
3+
namespace App\Console;
4+
5+
use Illuminate\Console\Scheduling\Schedule;
6+
use Illuminate\Foundation\Console\Kernel as ConsoleKernel;
7+
8+
class Kernel extends ConsoleKernel
9+
{
10+
/**
11+
* The Artisan commands provided by your application.
12+
*
13+
* @var array
14+
*/
15+
protected $commands = [
16+
//
17+
];
18+
19+
/**
20+
* Define the application's command schedule.
21+
*
22+
* @param \Illuminate\Console\Scheduling\Schedule $schedule
23+
* @return void
24+
*/
25+
protected function schedule(Schedule $schedule)
26+
{
27+
// $schedule->command('inspire')
28+
// ->hourly();
29+
}
30+
31+
/**
32+
* Register the commands for the application.
33+
*
34+
* @return void
35+
*/
36+
protected function commands()
37+
{
38+
$this->load(__DIR__.'/Commands');
39+
40+
require base_path('routes/console.php');
41+
}
42+
}

app/Exceptions/Handler.php

Lines changed: 51 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,51 @@
1+
<?php
2+
3+
namespace App\Exceptions;
4+
5+
use Exception;
6+
use Illuminate\Foundation\Exceptions\Handler as ExceptionHandler;
7+
8+
class Handler extends ExceptionHandler
9+
{
10+
/**
11+
* A list of the exception types that are not reported.
12+
*
13+
* @var array
14+
*/
15+
protected $dontReport = [
16+
//
17+
];
18+
19+
/**
20+
* A list of the inputs that are never flashed for validation exceptions.
21+
*
22+
* @var array
23+
*/
24+
protected $dontFlash = [
25+
'password',
26+
'password_confirmation',
27+
];
28+
29+
/**
30+
* Report or log an exception.
31+
*
32+
* @param \Exception $exception
33+
* @return void
34+
*/
35+
public function report(Exception $exception)
36+
{
37+
parent::report($exception);
38+
}
39+
40+
/**
41+
* Render an exception into an HTTP response.
42+
*
43+
* @param \Illuminate\Http\Request $request
44+
* @param \Exception $exception
45+
* @return \Illuminate\Http\Response
46+
*/
47+
public function render($request, Exception $exception)
48+
{
49+
return parent::render($request, $exception);
50+
}
51+
}

app/Helpers/UserInterfaceHelper.php

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,12 @@
1+
<?php
2+
3+
if (!function_exists('route_link_class')) {
4+
function route_link_class($route, $active = 'active', $class = 'nav-link')
5+
{
6+
if (request()->routeIs($route)) {
7+
return "{$class} {$active}";
8+
}
9+
10+
return $class;
11+
}
12+
}
Lines changed: 65 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,65 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Api;
4+
5+
use Illuminate\Http\Request;
6+
use Tymon\JWTAuth\Facades\JWTAuth;
7+
use App\Http\Controllers\Controller;
8+
9+
class ApiController extends Controller
10+
{
11+
public function __construct()
12+
{
13+
14+
}
15+
16+
/**
17+
* Get the user
18+
*
19+
* @return \Illuminate\Http\Response
20+
*/
21+
public function getAuthenticatedUser()
22+
{
23+
try {
24+
if (! $user = JWTAuth::parseToken()->authenticate()) {
25+
return response()->json(['user_not_found'], 404);
26+
}
27+
} catch (\Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
28+
return response()->json(['token_expired'], $e->getStatusCode());
29+
} catch (\Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {
30+
return response()->json(['token_invalid'], $e->getStatusCode());
31+
} catch (\Tymon\JWTAuth\Exceptions\JWTException $e) {
32+
return response()->json(['token_absent'], $e->getStatusCode());
33+
}
34+
35+
return $user;
36+
}
37+
38+
/**
39+
* Get user profile
40+
* @return JSON
41+
*/
42+
public function getProfile()
43+
{
44+
$user = $this->getAuthenticatedUser();
45+
46+
return response()->json(compact('user'));
47+
}
48+
49+
/**
50+
* Update the user
51+
*
52+
* @param UpdateAccountRequest $request
53+
* @return \Illuminate\Http\Response
54+
*/
55+
public function postProfile(Request $request)
56+
{
57+
$user = $this->getAuthenticatedUser();
58+
59+
if ($this->service->update($user->id, $request->all())) {
60+
return response()->json(compact('user'));
61+
}
62+
63+
return response()->json(['error' => 'Could not update user']);
64+
}
65+
}
Lines changed: 68 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,68 @@
1+
<?php
2+
3+
namespace App\Http\Controllers\Api;
4+
5+
use App\Http\Requests;
6+
use Illuminate\Http\Request;
7+
use App\Services\UserService;
8+
use Tymon\JWTAuth\Facades\JWTAuth;
9+
use App\Http\Controllers\Controller;
10+
use App\Http\Requests\UpdateUserRequest;
11+
12+
class TeamsController extends ApiController
13+
{
14+
public function __construct(UserService $userService)
15+
{
16+
$this->service = $userService;
17+
}
18+
19+
/**
20+
* Get the user
21+
*
22+
* @return \Illuminate\Http\Response
23+
*/
24+
public function getAuthenticatedUser()
25+
{
26+
try {
27+
if (! $user = JWTAuth::parseToken()->authenticate()) {
28+
return response()->json(['user_not_found'], 404);
29+
}
30+
} catch (\Tymon\JWTAuth\Exceptions\TokenExpiredException $e) {
31+
return response()->json(['token_expired'], $e->getStatusCode());
32+
} catch (\Tymon\JWTAuth\Exceptions\TokenInvalidException $e) {
33+
return response()->json(['token_invalid'], $e->getStatusCode());
34+
} catch (\Tymon\JWTAuth\Exceptions\JWTException $e) {
35+
return response()->json(['token_absent'], $e->getStatusCode());
36+
}
37+
38+
return $user;
39+
}
40+
41+
/**
42+
* Get user profile
43+
* @return JSON
44+
*/
45+
public function getProfile()
46+
{
47+
$user = $this->getAuthenticatedUser();
48+
49+
return response()->json(compact('user'));
50+
}
51+
52+
/**
53+
* Update the user
54+
*
55+
* @param UpdateAccountRequest $request
56+
* @return \Illuminate\Http\Response
57+
*/
58+
public function postProfile(Request $request)
59+
{
60+
$user = $this->getAuthenticatedUser();
61+
62+
if ($this->service->update($user->id, $request->all())) {
63+
return response()->json(compact('user'));
64+
}
65+
66+
return response()->json(['error' => 'Could not update user']);
67+
}
68+
}

0 commit comments

Comments
 (0)