1
0
Fork 0
internet-everythings-agricu.../app/Admin/Controllers/AuthController.php

79 lines
3.2 KiB
PHP

<?php
namespace App\Admin\Controllers;
use Illuminate\Support\Arr;
use Illuminate\Validation\Rule;
use Illuminate\Support\Facades\Hash;
use Slowlyo\OwlAdmin\Controllers\AuthController as AdminAuthController;
use Slowlyo\OwlAdmin\Renderers\{Page, Form, TextControl, ImageControl};
class AuthController extends AdminAuthController
{
public function userSetting(): \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
{
$user = $this->user();
$form = Form::make()
->title()
->panelClassName('px-48 m:px-0')
->mode('horizontal')
->data(Arr::only($user->toArray(), ['avatar', 'name']))
->api('put:' . admin_url('/user_setting'))
// ->persistDataKeys(['avatar', 'name'])
// ->resetAfterSubmit()
->body([
ImageControl::make()
->label(__('admin.admin_user.avatar'))
->name('avatar')
->receiver($this->uploadImagePath()),
TextControl::make()
->label(__('admin.admin_user.name'))
->name('name')
->required(),
TextControl::make()
->type('input-password')
->label(__('admin.old_password'))
->name('old_password'),
TextControl::make()
->type('input-password')
->label('新密码')
->name('password')
->validations(['minLength' => 6])
->requiredOn('!!this.old_password'),
TextControl::make()
->type('input-password')
->label(__('admin.confirm_password'))
->name('confirm_password')
->validations(['minLength' => 6])
->requiredOn('!!this.old_password'),
]);
return $this->response()->success(Page::make()->body($form));
}
public function saveUserSetting(): \Illuminate\Http\JsonResponse|\Illuminate\Http\Resources\Json\JsonResource
{
$request = request();
$request->validate([
'old_password' => ['nullable', 'current_password:sanctum', Rule::requiredIf($request->filled(['password', 'confirm_password']))],
'password' => Rule::requiredIf($request->filled('old_password')),
'confirm_password' => [Rule::requiredIf($request->filled('old_password')), 'same:password'],
], [
'old_password.required' => '原密码必填',
'password.required' => '新密码必填',
'confirm_password.required' => '确认密码必填',
'old_password.current_password' => __('admin.admin_user.old_password_error'),
'confirm_password.same' => __('admin.admin_user.password_confirmation'),
]);
$user = $this->user();
$attributes = $request->only(['avatar', 'name']);
if ($request->filled('old_password')) {
$attributes['password']
= Hash::make($request->input('password'));
}
$user->update($attributes);
return $this->response()->successMessage(__('admin.action_success'));
}
}