From 2267a2cadb4b5e708829d17ff10a8846cdec7a74 Mon Sep 17 00:00:00 2001 From: Pig Fang Date: Sat, 23 Mar 2019 11:06:36 +0800 Subject: [PATCH] Remove UserRepository --- app/Http/Controllers/AdminController.php | 31 ++------ app/Http/Controllers/AuthController.php | 33 ++++---- app/Http/Controllers/SkinlibController.php | 12 +-- app/Http/Controllers/TextureController.php | 10 +-- app/Http/Controllers/UserController.php | 12 +-- app/Providers/AppServiceProvider.php | 1 - .../Repositories/OptionRepository.php | 2 + app/Services/Repositories/UserRepository.php | 78 ------------------- app/helpers.php | 15 ---- resources/views/skinlib/show.blade.php | 2 +- tests/AuthControllerTest.php | 6 +- .../RepositoriesTest/UserRepositoryTest.php | 23 ------ 12 files changed, 40 insertions(+), 185 deletions(-) delete mode 100644 app/Services/Repositories/UserRepository.php delete mode 100644 tests/ServicesTest/RepositoriesTest/UserRepositoryTest.php diff --git a/app/Http/Controllers/AdminController.php b/app/Http/Controllers/AdminController.php index 8bd3b663..ab925ee2 100644 --- a/app/Http/Controllers/AdminController.php +++ b/app/Http/Controllers/AdminController.php @@ -14,7 +14,6 @@ use Illuminate\Http\Request; use Illuminate\Support\Collection; use Illuminate\Support\Facades\Auth; use Illuminate\Support\Facades\Redis; -use App\Services\Repositories\UserRepository; class AdminController extends Controller { @@ -375,16 +374,10 @@ class AdminController extends Controller ]; } - /** - * Handle ajax request from /admin/users. - * - * @param Request $request - * @return \Illuminate\Http\JsonResponse - */ - public function userAjaxHandler(Request $request, UserRepository $users) + public function userAjaxHandler(Request $request) { $action = $request->input('action'); - $user = $users->get($request->input('uid')); + $user = User::find($request->uid); $currentUser = Auth::user(); if (! $user) { @@ -400,7 +393,7 @@ class AdminController extends Controller 'email' => 'required|email', ]); - if ($users->get($request->input('email'), 'email')) { + if (User::where('email', $request->email)->count() != 0) { return json(trans('admin.users.operations.email.existed', ['email' => $request->input('email')]), 1); } @@ -459,10 +452,7 @@ class AdminController extends Controller } } - /** - * Handle ajax request from /admin/players. - */ - public function playerAjaxHandler(Request $request, UserRepository $users) + public function playerAjaxHandler(Request $request) { $action = $request->input('action'); $currentUser = Auth::user(); @@ -498,7 +488,7 @@ class AdminController extends Controller 'uid' => 'required|integer', ]); - $user = $users->get($request->input('uid')); + $user = User::find($request->uid); if (! $user) { return json(trans('admin.users.operations.non-existent'), 1); @@ -532,16 +522,9 @@ class AdminController extends Controller } } - /** - * Get one user information. - * - * @param string $uid - * @param UserRepository $users - * @return \Illuminate\Http\JsonResponse - */ - public function getOneUser($uid, UserRepository $users) + public function getOneUser($uid) { - $user = $users->get(intval($uid)); + $user = User::find($uid); if ($user) { return json('success', 0, ['user' => $user->makeHidden([ 'password', 'ip', 'last_sign_at', 'register_at', 'remember_token', diff --git a/app/Http/Controllers/AuthController.php b/app/Http/Controllers/AuthController.php index 24fcdd9e..4abf66a2 100644 --- a/app/Http/Controllers/AuthController.php +++ b/app/Http/Controllers/AuthController.php @@ -14,11 +14,10 @@ use App\Mail\ForgotPassword; use Illuminate\Http\Request; use Illuminate\Support\Facades\Auth; use App\Exceptions\PrettyPageException; -use App\Services\Repositories\UserRepository; class AuthController extends Controller { - public function handleLogin(Request $request, UserRepository $users) + public function handleLogin(Request $request) { $this->validate($request, [ 'identification' => 'required', @@ -28,14 +27,16 @@ class AuthController extends Controller $identification = $request->input('identification'); // Guess type of identification - $authType = (validate($identification, 'email')) ? 'email' : 'username'; + $authType = filter_var($identification, FILTER_VALIDATE_EMAIL) ? 'email' : 'username'; event(new Events\UserTryToLogin($identification, $authType)); - // Get user instance from repository. - // If the given identification is not registered yet, - // it will return a null value. - $user = $users->get($identification, $authType); + if ($authType == 'email') { + $user = User::where('email', $identification)->first(); + } else { + $player = Player::where('name', $identification)->first(); + $user = $player ? $player->user : null; + } // Require CAPTCHA if user fails to login more than 3 times $loginFailsCacheKey = sha1('login_fails_'.get_client_ip()); @@ -73,7 +74,6 @@ class AuthController extends Controller { if (Auth::check()) { Auth::logout(); - return json(trans('auth.logout.success'), 0); } else { return json(trans('auth.logout.fail'), 1); @@ -161,7 +161,7 @@ class AuthController extends Controller } } - public function handleForgot(Request $request, UserRepository $users) + public function handleForgot(Request $request) { $this->validate($request, [ 'captcha' => 'required'.(app()->environment('testing') ? '' : '|captcha'), @@ -184,8 +184,7 @@ class AuthController extends Controller ]); } - // Get user instance - $user = $users->get($request->input('email'), 'email'); + $user = User::where('email', $request->email)->first(); if (! $user) { return json(trans('auth.forgot.unregistered'), 1); @@ -206,29 +205,29 @@ class AuthController extends Controller return json(trans('auth.forgot.success'), 0); } - public function reset($uid, UserRepository $users) + public function reset($uid) { - return view('auth.reset')->with('user', $users->get($uid)); + return view('auth.reset')->with('user', User::find($uid)); } - public function handleReset($uid, Request $request, UserRepository $users) + public function handleReset($uid, Request $request) { $validated = $this->validate($request, [ 'password' => 'required|min:8|max:32', ]); - $users->get($uid)->changePassword($validated['password']); + User::find($uid)->changePassword($validated['password']); return json(trans('auth.reset.success'), 0); } - public function verify(UserRepository $users, $uid) + public function verify($uid) { if (! option('require_verification')) { throw new PrettyPageException(trans('user.verification.disabled'), 1); } - $user = $users->get($uid); + $user = User::find($uid); if (! $user || $user->verified) { throw new PrettyPageException(trans('auth.verify.invalid'), 1); diff --git a/app/Http/Controllers/SkinlibController.php b/app/Http/Controllers/SkinlibController.php index bcc2d916..2e4bafa4 100644 --- a/app/Http/Controllers/SkinlibController.php +++ b/app/Http/Controllers/SkinlibController.php @@ -12,7 +12,6 @@ use App\Models\Texture; use Illuminate\Http\Request; use Illuminate\Http\JsonResponse; use Illuminate\Support\Facades\Auth; -use App\Services\Repositories\UserRepository; class SkinlibController extends Controller { @@ -226,7 +225,7 @@ class SkinlibController extends Controller // @codeCoverageIgnore - public function delete(Request $request, UserRepository $users) + public function delete(Request $request) { $result = Texture::find($request->tid); $user = Auth::user(); @@ -251,7 +250,7 @@ class SkinlibController extends Controller } }); - if ($u = $users->get($result->uploader)) { + if ($u = User::find($result->uploader)) { $ret = 0; if (option('return_score')) { $ret += $result->size * ( @@ -275,7 +274,7 @@ class SkinlibController extends Controller // @codeCoverageIgnore - public function privacy(Request $request, UserRepository $users) + public function privacy(Request $request) { $t = Texture::find($request->input('tid')); $user = Auth::user(); @@ -288,11 +287,12 @@ class SkinlibController extends Controller return json(trans('skinlib.no-permission'), 1); } + $uploader = User::find($t->uploader); $score_diff = $t->size * (option('private_score_per_storage') - option('score_per_storage')) * ($t->public ? -1 : 1); if ($t->public && option('take_back_scores_after_deletion', true)) { $score_diff -= option('score_award_per_texture', 0); } - if ($users->get($t->uploader)->score + $score_diff < 0) { + if ($uploader->score + $score_diff < 0) { return json(trans('skinlib.upload.lack-score'), 1); } @@ -308,7 +308,7 @@ class SkinlibController extends Controller } }); - @$users->get($t->uploader)->setScore($score_diff, 'plus'); + @$uploader->setScore($score_diff, 'plus'); $t->public = ! $t->public; $t->save(); diff --git a/app/Http/Controllers/TextureController.php b/app/Http/Controllers/TextureController.php index 3d743d47..37ba3a41 100644 --- a/app/Http/Controllers/TextureController.php +++ b/app/Http/Controllers/TextureController.php @@ -8,11 +8,11 @@ use Storage; use Response; use Exception; use Minecraft; +use App\Models\User; use App\Models\Player; use App\Models\Texture; use App\Events\GetSkinPreview; use App\Events\GetAvatarPreview; -use App\Services\Repositories\UserRepository; use Symfony\Component\HttpFoundation\Response as SymfonyResponse; class TextureController extends Controller @@ -127,9 +127,9 @@ class TextureController extends Controller return $this->avatarByTid($tid, $size); } - public function avatar($base64_email, UserRepository $users, $size = 128) + public function avatar($base64_email, $size = 128) { - $user = $users->get(base64_decode($base64_email), 'email'); + $user = User::where('email', base64_decode($base64_email))->first(); if ($user) { return $this->avatarByTid($user->avatar, $size); @@ -138,9 +138,9 @@ class TextureController extends Controller return response()->file(storage_path('static_textures/avatar.png')); } - public function avatarWithSize($size, $base64_email, UserRepository $users) + public function avatarWithSize($size, $base64_email) { - return $this->avatar($base64_email, $users, $size); + return $this->avatar($base64_email, $size); } public function preview($tid, $size = 250) diff --git a/app/Http/Controllers/UserController.php b/app/Http/Controllers/UserController.php index 1ac7c61e..93d48911 100644 --- a/app/Http/Controllers/UserController.php +++ b/app/Http/Controllers/UserController.php @@ -13,7 +13,6 @@ use Illuminate\Http\Request; use App\Mail\EmailVerification; use App\Events\UserProfileUpdated; use Illuminate\Support\Facades\Auth; -use App\Services\Repositories\UserRepository; class UserController extends Controller { @@ -161,14 +160,7 @@ class UserController extends Controller return view('user.profile')->with('user', Auth::user()); } - /** - * Handle changing user profile. - * - * @param Request $request - * @param UserRepository $users - * @return mixed - */ - public function handleProfile(Request $request, UserRepository $users) + public function handleProfile(Request $request) { $action = $request->input('action', ''); $user = Auth::user(); @@ -216,7 +208,7 @@ class UserController extends Controller 'password' => 'required|min:6|max:32', ]); - if ($users->get($request->input('new_email'), 'email')) { + if (User::where('email', $request->new_email)->count() > 0) { return json(trans('user.profile.email.existed'), 1); } diff --git a/app/Providers/AppServiceProvider.php b/app/Providers/AppServiceProvider.php index 4ab496b1..e622113e 100644 --- a/app/Providers/AppServiceProvider.php +++ b/app/Providers/AppServiceProvider.php @@ -65,7 +65,6 @@ class AppServiceProvider extends ServiceProvider public function register() { $this->app->singleton('cipher', 'App\Services\Cipher\\'.config('secure.cipher')); - $this->app->singleton('users', \App\Services\Repositories\UserRepository::class); $this->app->singleton('options', OptionRepository::class); $this->app->singleton('parsedown', \Parsedown::class); } diff --git a/app/Services/Repositories/OptionRepository.php b/app/Services/Repositories/OptionRepository.php index 30ae3739..87ced8ff 100644 --- a/app/Services/Repositories/OptionRepository.php +++ b/app/Services/Repositories/OptionRepository.php @@ -8,6 +8,8 @@ use Illuminate\Database\QueryException; class OptionRepository extends Repository { + protected $items = []; + /** * Create a new option repository. * diff --git a/app/Services/Repositories/UserRepository.php b/app/Services/Repositories/UserRepository.php deleted file mode 100644 index ee4a0da7..00000000 --- a/app/Services/Repositories/UserRepository.php +++ /dev/null @@ -1,78 +0,0 @@ -items, $identification); - } else { - return (bool) Arr::where((array) $this->items, function ($value) use ($identification, $type) { - if (property_exists($value, $type)) { - return false; - } - - return $value->$type == $identification; - }); - } - } - - /** - * Get a user from repository and cache it. - * - * @param string $identification - * @param string $type - * @return mixed - */ - public function get($identification, $type = 'uid') - { - if (! $this->has($identification, $type)) { - if ($type == 'username') { - $player = Player::where('name', $identification)->first(); - - if ($player) { - $identification = $player->uid; - $type = 'uid'; - } else { - return null; - } - } - - $user = User::where($type, $identification)->first(); - - if ($user) { - $this->set($user->uid, $user); - - return $user; - } - - return null; - } - - $result = Arr::where((array) $this->items, function ($value) use ($identification, $type) { - if (property_exists($value, $type)) { - return false; - } - - return $value->$type == $identification; - }); - - // Return first element - reset($result); - - return current($result); - } -} diff --git a/app/helpers.php b/app/helpers.php index 505b117e..60388f6a 100644 --- a/app/helpers.php +++ b/app/helpers.php @@ -303,21 +303,6 @@ if (! function_exists('option_localized')) { } } -if (! function_exists('validate')) { - function validate($value, $type) - { - switch ($type) { - case 'email': - return (bool) filter_var($value, FILTER_VALIDATE_EMAIL); - break; - - default: - // code... - break; - } - } -} - if (! function_exists('humanize_db_type')) { function humanize_db_type($type = null) { diff --git a/resources/views/skinlib/show.blade.php b/resources/views/skinlib/show.blade.php index 9d81c8e1..dc2e44b6 100644 --- a/resources/views/skinlib/show.blade.php +++ b/resources/views/skinlib/show.blade.php @@ -52,7 +52,7 @@ Object.defineProperty(blessing, 'extra', { currentUid: {{ is_null($user) ? '0' : $user->uid }}, admin: {{ $user && $user->isAdmin() ? 'true' : 'false' }}, inCloset: {{ $user && $user->closet()->where('tid', $texture->tid)->count() > 0 ? 'true' : 'false' }}, - nickname: @php echo ($up = app('users')->get($texture->uploader)) ? '"'.$up->nickname.'"' : 'null' @endphp + nickname: @php echo ($up = \App\Models\User::find($texture->uploader)) ? '"'.$up->nickname.'"' : 'null' @endphp }) }) diff --git a/tests/AuthControllerTest.php b/tests/AuthControllerTest.php index 8cc17cb4..4145840a 100644 --- a/tests/AuthControllerTest.php +++ b/tests/AuthControllerTest.php @@ -28,11 +28,7 @@ class AuthControllerTest extends TestCase $user = factory(User::class)->create(); $user->changePassword('12345678'); - $player = factory(Player::class)->create( - [ - 'uid' => $user->uid, - ] - ); + $player = factory(Player::class)->create(['uid' => $user->uid]); // Should return a warning if `identification` is empty $this->postJson('/auth/login') diff --git a/tests/ServicesTest/RepositoriesTest/UserRepositoryTest.php b/tests/ServicesTest/RepositoriesTest/UserRepositoryTest.php deleted file mode 100644 index 6b34c0b3..00000000 --- a/tests/ServicesTest/RepositoriesTest/UserRepositoryTest.php +++ /dev/null @@ -1,23 +0,0 @@ -assertFalse($repo->has('not_found', 'invalid')); - } - - public function testGet() - { - $repo = new UserRepository(); - $this->assertNull($repo->get('not_found', 'username')); - } -}