Permet l'ajout et la mise à jour des avatars

Fix #12
This commit is contained in:
2020-03-18 10:43:49 +01:00
parent f97c6a56ec
commit d77458f792
5 changed files with 186 additions and 24 deletions

View File

@@ -22,9 +22,6 @@ class UserController extends Controller
$user_id = Auth::user()->getAuthIdentifier();
$user = User::find($user_id);
$validated = $request->validated();
if (!array_key_exists('encrypt_messages', $validated)) {
$validated['encrypt_messages'] = 0;
}
if (isset($validated['avatar'])) {
try {
$user->clearMediaCollection('avatars');
@@ -33,7 +30,13 @@ class UserController extends Controller
} catch (FileDoesNotExist $e) {
} catch (FileIsTooBig $e) {
}
unset($validated['avatar']);
}
if (!array_key_exists('encrypt_messages', $validated)) {
$validated['encrypt_messages'] = 0;
}
$user->update($validated);
return redirect(route('user.index'))->withSuccess('Data saved!');

View File

@@ -25,11 +25,11 @@ class UpdateUser extends FormRequest
public function rules()
{
return [
'name' => 'required|min:4|max:255',
'email' => 'required|email:rfc|unique:users,email,'.Auth::user()->getAuthIdentifier(),
'encrypt_messages' => 'boolean',
'name' => 'required|min:4|max:255',
'email' => 'required|email:rfc|unique:users,email,'.Auth::user()->getAuthIdentifier(),
'encrypt_messages' => 'boolean',
'notification_hour' => 'in:0,1,2,3,4',
'avatar' => 'file|dimensions:min_width=50,min_height=50,max_width=200,max_height=200,ratio=1'
'avatar' => 'file|dimensions:max_width=200,max_height=200,ratio=1'
];
}
}

View File

@@ -5,6 +5,7 @@ namespace App;
use Illuminate\Contracts\Auth\MustVerifyEmail;
use Illuminate\Foundation\Auth\User as Authenticatable;
use Illuminate\Notifications\Notifiable;
use Illuminate\Support\Facades\Log;
use Spatie\Image\Exceptions\InvalidManipulation;
use Spatie\MediaLibrary\HasMedia\HasMedia;
use Spatie\MediaLibrary\HasMedia\HasMediaTrait;
@@ -20,7 +21,7 @@ class User extends Authenticatable implements HasMedia
* @var array
*/
protected $fillable = [
'name', 'email', 'password', 'notification_hour', 'encrypt_messages', 'avatar',
'name', 'email', 'password', 'notification_hour', 'encrypt_messages',
];
/**
@@ -37,14 +38,8 @@ class User extends Authenticatable implements HasMedia
];
/**
* The attributes that should be cast to native types.
*
* @var array
* @return string
*/
// protected $casts = [
// 'email_verified_at' => 'datetime',
// ];
public function getFolder()
{
$arrayHash = str_split(strtolower(md5($this->id)));
@@ -66,9 +61,15 @@ class User extends Authenticatable implements HasMedia
{
try {
$this->addMediaConversion('thumb')
->width(50)
->height(50);
->width(100)
->height(100)
->optimize();
$this->addMediaConversion('icon')
->width(32)
->height(32)
->optimize();
} catch (InvalidManipulation $e) {
Log::alert(sprintf('Error while manipulating Avatar for %s (%s)', $this->email, $e->getMessage()));
}
}
@@ -76,8 +77,8 @@ class User extends Authenticatable implements HasMedia
* @param string $alias
* @return string
*/
public function getAvatar($alias = 'thumb')
public function getAvatar($alias = 'thumb'): string
{
return $this->getFirstMediaUrl('avatars');
return $this->getFirstMediaUrl('avatars', $alias);
}
}