Skip to content

Commit 134f7ed

Browse files
authored
Merge pull request #72 from BinaryStudioAcademy/dev
Dev
2 parents 67408cb + 4bf292e commit 134f7ed

File tree

158 files changed

+13766
-12060
lines changed

Some content is hidden

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

158 files changed

+13766
-12060
lines changed

backend/.env.example

Lines changed: 5 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -29,6 +29,8 @@ MAIL_PORT=2525
2929
MAIL_USERNAME=null
3030
MAIL_PASSWORD=null
3131
MAIL_ENCRYPTION=null
32+
MAIL_FROM_ADDRESS=
33+
MAIL_FROM_NAME=
3234

3335
AWS_ACCESS_KEY_ID=
3436
AWS_SECRET_ACCESS_KEY=
@@ -48,3 +50,6 @@ JWT_SECRET=
4850
MYSQL_PORT=33061
4951
APP_PORT=7777
5052
MYSQL_PORT_TEST_DB=33062
53+
54+
BEANSTALKD_HOST=
55+
FILESYSTEM_DRIVER=public

backend/Procfile

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1 @@
1+
web: vendor/bin/heroku-php-nginx -C heroku.nginx.conf public/

backend/app/Action/Auth/RegisterAction.php

Lines changed: 10 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -5,31 +5,37 @@
55
namespace App\Action\Auth;
66

77
use App\Repository\UserRepository;
8+
use Illuminate\Mail\Mailer;
9+
use App\Mail\WelcomeEmail;
810

911
final class RegisterAction
1012
{
1113
private $userRepository;
14+
private $mailer;
1215

13-
public function __construct(UserRepository $userRepository)
16+
public function __construct(UserRepository $userRepository, Mailer $mailer)
1417
{
1518
$this->userRepository = $userRepository;
19+
$this->mailer = $mailer;
1620
}
1721

1822
public function execute(RegisterRequest $request): AuthenticationResponse
1923
{
2024
$user = $this->userRepository->create([
2125
'email' => $request->getEmail(),
2226
'password' => $request->getPassword(),
23-
'name' => $request->getName(),
27+
'first_name' => $request->getFirstName(),
28+
'last_name' => $request->getLastName(),
2429
'nickname' => $request->getNickname()
2530
]);
26-
2731
$token = auth()->login($user);
2832

33+
$this->mailer->to($user)->send(new WelcomeEmail());
34+
2935
return new AuthenticationResponse(
3036
$token,
3137
'bearer',
3238
auth()->factory()->getTTL() * 60
3339
);
3440
}
35-
}
41+
}

backend/app/Action/Auth/RegisterRequest.php

Lines changed: 13 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -8,18 +8,21 @@ final class RegisterRequest
88
{
99
private $email;
1010
private $password;
11-
private $name;
11+
private $firstName;
12+
private $lastName;
1213
private $nickname;
1314

1415
public function __construct(
1516
string $email,
1617
string $password,
17-
string $name,
18+
string $firstName,
19+
string $lastName,
1820
string $nickname
1921
) {
2022
$this->email = $email;
2123
$this->password = $password;
22-
$this->name = $name;
24+
$this->firstName = $firstName;
25+
$this->lastName = $lastName;
2326
$this->nickname = $nickname;
2427
}
2528

@@ -33,9 +36,14 @@ public function getPassword(): string
3336
return $this->password;
3437
}
3538

36-
public function getName(): string
39+
public function getFirstName(): string
3740
{
38-
return $this->name;
41+
return $this->firstName;
42+
}
43+
44+
public function getLastName(): string
45+
{
46+
return $this->lastName;
3947
}
4048

4149
public function getNickname(): string
Lines changed: 32 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
<?php
2+
3+
declare(strict_types = 1);
4+
5+
namespace App\Action\Auth;
6+
7+
use App\Repository\UserRepository;
8+
use Illuminate\Support\Facades\Auth;
9+
10+
final class UpdateProfileAction
11+
{
12+
private $userRepository;
13+
14+
public function __construct(UserRepository $userRepository)
15+
{
16+
$this->userRepository = $userRepository;
17+
}
18+
19+
public function execute(UpdateProfileRequest $request): UpdateProfileResponse
20+
{
21+
$user = Auth::user();
22+
23+
$user->email = $request->getEmail() ?: $user->email;
24+
$user->first_name = $request->getFirstName() ?: $user->first_name;
25+
$user->last_name = $request->getLastName() ?: $user->last_name;
26+
$user->nickname = $request->getNickname() ?: $user->nickname;
27+
28+
$user = $this->userRepository->save($user);
29+
30+
return new UpdateProfileResponse($user);
31+
}
32+
}
Lines changed: 45 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,45 @@
1+
<?php
2+
3+
declare(strict_types = 1);
4+
5+
namespace App\Action\Auth;
6+
7+
final class UpdateProfileRequest
8+
{
9+
private $email;
10+
private $firstName;
11+
private $lastName;
12+
private $nickname;
13+
14+
public function __construct(
15+
?string $email,
16+
?string $firstName,
17+
?string $lastName,
18+
?string $nickname
19+
) {
20+
$this->email = $email;
21+
$this->firstName = $firstName;
22+
$this->lastName = $lastName;
23+
$this->nickname = $nickname;
24+
}
25+
26+
public function getEmail(): ?string
27+
{
28+
return $this->email;
29+
}
30+
31+
public function getFirstName(): ?string
32+
{
33+
return $this->firstName;
34+
}
35+
36+
public function getLastName(): ?string
37+
{
38+
return $this->lastName;
39+
}
40+
41+
public function getNickname(): ?string
42+
{
43+
return $this->nickname;
44+
}
45+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
declare(strict_types = 1);
4+
5+
namespace App\Action\Auth;
6+
7+
use App\Entity\User;
8+
9+
final class UpdateProfileResponse
10+
{
11+
private $user;
12+
13+
public function __construct(User $user)
14+
{
15+
$this->user = $user;
16+
}
17+
18+
public function getUser(): User
19+
{
20+
return $this->user;
21+
}
22+
}
Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,38 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Action\Auth;
6+
7+
use App\Repository\UserRepository;
8+
use Illuminate\Support\Facades\Auth;
9+
use Illuminate\Support\Facades\Storage;
10+
use Illuminate\Support\Facades\Config;
11+
12+
final class UploadProfileImageAction
13+
{
14+
private $userRepository;
15+
16+
public function __construct(UserRepository $userRepository)
17+
{
18+
$this->userRepository = $userRepository;
19+
}
20+
21+
public function execute(UploadProfileImageRequest $request): UploadProfileImageResponse
22+
{
23+
$user = Auth::user();
24+
25+
$filePath = Storage::putFileAs(
26+
Config::get('filesystems.profile_images_dir'),
27+
$request->getImage(),
28+
$request->getImage()->hashName(),
29+
'public'
30+
);
31+
32+
$user->profile_image = Storage::url($filePath);
33+
34+
$user = $this->userRepository->save($user);
35+
36+
return new UploadProfileImageResponse($user);
37+
}
38+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
declare(strict_types=1);
4+
5+
namespace App\Action\Auth;
6+
7+
use Illuminate\Http\UploadedFile;
8+
9+
final class UploadProfileImageRequest
10+
{
11+
private $image;
12+
13+
public function __construct(UploadedFile $image)
14+
{
15+
$this->image = $image;
16+
}
17+
18+
public function getImage(): UploadedFile
19+
{
20+
return $this->image;
21+
}
22+
}
Lines changed: 22 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,22 @@
1+
<?php
2+
3+
declare(strict_types = 1);
4+
5+
namespace App\Action\Auth;
6+
7+
use App\Entity\User;
8+
9+
final class UploadProfileImageResponse
10+
{
11+
private $user;
12+
13+
public function __construct(User $user)
14+
{
15+
$this->user = $user;
16+
}
17+
18+
public function getUser(): User
19+
{
20+
return $this->user;
21+
}
22+
}

0 commit comments

Comments
 (0)