user profile UI

This commit is contained in:
glovetleong
2021-07-07 14:47:43 +08:00
parent ad85832e75
commit 3283d379c5
20 changed files with 1391 additions and 308 deletions
@@ -22,34 +22,16 @@ class UserController extends BaseController
return $self;
}
// public function list(Request $request)
// {
// $admin_list = AdminModule::list($request);
// return $admin_list;
// }
public function update(Request $request)
{
$user = UserModule::update($request);
return $user;
}
// public function show(Request $request, $hash_id)
// {
// $admin = AdminModule::show($request, $hash_id);
// return $admin;
// }
// public function store(Request $request)
// {
// $admin = AdminModule::store($request);
// return $admin;
// }
// public function update(Request $request, $hash_id)
// {
// $admin = AdminModule::update($request, $hash_id);
// return $admin;
// }
// public function validCheck(Request $request, $hash_id = '')
// {
// $method = empty($hash_id) ? 'POST' :'PUT' ;
// $valid = AdminModule::validCheck($request, $hash_id, $method);
// return $valid;
// }
public function validCheck(Request $request, $hash_id = '')
{
$method = empty($hash_id) ? 'POST' :'PUT' ;
$valid = UserModule::validCheck($request, $hash_id, $method);
return $valid;
}
}
+102 -3
View File
@@ -6,10 +6,7 @@ use Auth;
use App\Models\User;
use App\Models\UserLog;
use App\Http\Rules\User\UnderCheck;
use App\Http\Rules\User\ExistCheck;
use App\Http\Rules\User\Image64Check;
use App\Http\Rules\User\CkeckAuthUpdate;
use App\Http\Helpers\General;
use App\Http\Helpers\Hasher;
@@ -37,6 +34,108 @@ class UserModule extends BaseController
return response()->json($data);
}
public static function update(Request $request)
{
$id = Auth::guard('user-api')->user()->id;
$validation = UserModule::validation($request, $id, 'PUT');
if (!$validation->status) {
return response()->json($validation, 422);
}
DB::beginTransaction();
$first_name = $request->input('first_name');
$last_name = $request->input('last_name');
$email = $request->input('email');
$password = $request->input('password');
$status = $request->input('status');
$user = User::find($id);
$user->first_name = $first_name ?? $user->first_name;
$user->last_name = $last_name ?? $user->last_name;
$user->email = $email ?? $user->email;
if (!empty($password)) {
$user->password = bcrypt($password);
}
$user->status = $status ?? 2;
// img
$img = $request->input('img');
if (!empty($img)) {
$remove_image = $user->img;
$remove_image = $remove_image ? ImageHandel::removeImage($remove_image) : '';
$img = json_encode(ImageHandel::insertImage('user', $img));
$user->img = $img;
if (!$img) {
DB::rollBack();
}
}
$user->update();
// log
UserModule::makeLog($user->id, 'user (' . Auth::guard('user-api')->user()->id . ') updated');
DB::commit();
$query_string = General::getCachePerviousQuery('admin_query');
$data = General::returnData($user, $query_string);
return response()->json($data);
}
public static function validCheck(Request $request, $hash_id = '', $method = 'POST')
{
$id = Auth::guard('user-api')->user()->id;
$validation = UserModule::validation($request, $id, $method);
if (!$validation->status) {
return response()->json($validation, 422);
}
}
private static function validation(Request $request, $id = '', $method = 'POST')
{
$data = $request->all();
$rule= [];
if ($method == 'PUT') {
$rule = [
'img' => '',
'first_name' => 'required',
'last_name' => 'required',
'email' => 'required|email|max:255|unique:users,email,' . $id,
'password' => 'sometimes|confirmed',
];
}
if (!empty($data['img'])) {
foreach ($data['img'] as $key => $row) {
$rule['img'.'.'.$key] = ['required', new Image64Check()];
}
}
$validator = Validator::make($data, $rule, config('error_code'));
$errors = $validator->errors();
if (!empty($data['img'])) {
foreach ($data['img'] as $key => $row) {
if ($errors->first('img'.'.'.$key)) {
$errors->add('img', config('error_code.img_error'));
break;
}
}
}
if ($validator->fails()) {
$data = General::returnErrorData($errors);
return $data;
}
else {
return (object)['status' => true];
}
}
public static function makeLog($id = '', $remark = '')
{
$user = User::find($id);
+52
View File
@@ -0,0 +1,52 @@
<?php
namespace App\Http\Rules\User;
use Illuminate\Contracts\Validation\Rule;
class Image64Check implements Rule
{
/**
* Create a new rule instance.
*
* @return void
*/
public function __construct()
{
}
/**
* Determine if the validation rule passes.
*
* @param string $attribute
* @param mixed $value
* @return bool
*/
public function passes($attribute, $value)
{
$this->attribute = $attribute;
$accept_mime_type = ['image/gif', 'image/png', 'image/jpeg'];
$f = finfo_open();
$mime_type = finfo_file($f, $value, FILEINFO_MIME_TYPE);
if (!in_array($mime_type, $accept_mime_type)) {
return false;
}
return true;
}
/**
* Get the validation error message.
*
* @return string
*/
public function message()
{
return config('error_code.img_error');
}
}