feat: add user fields
This commit is contained in:
@@ -12,6 +12,7 @@ use Illuminate\Auth\Events\Verified;
|
||||
use Illuminate\Http\JsonResponse;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Http\Resources\Json\JsonResource;
|
||||
use Illuminate\Support\Arr;
|
||||
use Illuminate\Support\Facades\DB;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Storage;
|
||||
@@ -29,12 +30,12 @@ class AuthController extends Controller
|
||||
$avatarPath = $request->file('avatar')->store('avatars', 'public');
|
||||
}
|
||||
|
||||
$user = User::create([
|
||||
'name' => $data['name'],
|
||||
'email' => strtolower($data['email']),
|
||||
'password' => Hash::make($data['password']),
|
||||
'avatar_url' => $avatarPath,
|
||||
]);
|
||||
$userAttributes = $this->userAttributesFromRequestData($data);
|
||||
$userAttributes['email'] = strtolower($data['email']);
|
||||
$userAttributes['password'] = Hash::make($data['password']);
|
||||
$userAttributes['avatar_url'] = $avatarPath;
|
||||
|
||||
$user = User::create($userAttributes);
|
||||
|
||||
$user->sendEmailVerificationNotification();
|
||||
|
||||
@@ -158,18 +159,17 @@ class AuthController extends Controller
|
||||
$data['avatar_url'] = $path;
|
||||
}
|
||||
|
||||
unset($data['avatar']);
|
||||
unset($data['nutritionGoals']);
|
||||
$userAttributes = $this->userAttributesFromRequestData($data);
|
||||
|
||||
if (is_array($nutritionGoals)) {
|
||||
$data['daily_calorie_goal'] = $nutritionGoals['calories'];
|
||||
$data['daily_protein_goal'] = $nutritionGoals['proteins'];
|
||||
$data['daily_carbs_goal'] = $nutritionGoals['carbs'];
|
||||
$data['daily_fats_goal'] = $nutritionGoals['fats'];
|
||||
$userAttributes['daily_calorie_goal'] = $nutritionGoals['calories'];
|
||||
$userAttributes['daily_protein_goal'] = $nutritionGoals['proteins'];
|
||||
$userAttributes['daily_carbs_goal'] = $nutritionGoals['carbs'];
|
||||
$userAttributes['daily_fats_goal'] = $nutritionGoals['fats'];
|
||||
}
|
||||
|
||||
if (! empty($data)) {
|
||||
$user->update($data);
|
||||
if (! empty($userAttributes)) {
|
||||
$user->update($userAttributes);
|
||||
}
|
||||
|
||||
return new UserResource($user->fresh());
|
||||
@@ -212,4 +212,35 @@ class AuthController extends Controller
|
||||
{
|
||||
return filled($path) && ! Str::startsWith($path, ['http://', 'https://']);
|
||||
}
|
||||
|
||||
/**
|
||||
* @param array<string, mixed> $data
|
||||
* @return array<string, mixed>
|
||||
*/
|
||||
private function userAttributesFromRequestData(array $data): array
|
||||
{
|
||||
$attributes = Arr::only($data, [
|
||||
'name',
|
||||
'avatar_url',
|
||||
'height',
|
||||
'bio',
|
||||
'sex',
|
||||
'date_of_birth',
|
||||
]);
|
||||
|
||||
$attributeMap = [
|
||||
'physicalActivityLevel' => 'physical_activity_level',
|
||||
'weightGoal' => 'weight_goal',
|
||||
'pacePreference' => 'pace_preference',
|
||||
'dateOfBirth' => 'date_of_birth',
|
||||
];
|
||||
|
||||
foreach ($attributeMap as $requestKey => $attribute) {
|
||||
if (array_key_exists($requestKey, $data)) {
|
||||
$attributes[$attribute] = $data[$requestKey];
|
||||
}
|
||||
}
|
||||
|
||||
return $attributes;
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user