From a5e7b0a5fb2a763447fdb1c420d44aeaeb250fbf Mon Sep 17 00:00:00 2001 From: Nafies Luthfi Date: Thu, 25 May 2017 18:10:49 +0700 Subject: [PATCH] Added user management, auth and user lang files --- app/Http/Controllers/UsersController.php | 82 +++++++++++++++ app/User.php | 2 +- database/factories/ModelFactory.php | 14 +++ resources/lang/id/auth.php | 28 +++++ resources/lang/id/user.php | 28 +++++ resources/views/layouts/partials/top-nav.blade.php | 1 + resources/views/users/index.blade.php | 38 +++++++ resources/views/users/partials/forms.blade.php | 38 +++++++ routes/web.php | 5 + tests/Feature/Cart/SearchProductsTest.php | 2 +- tests/Feature/ManageUsersTest.php | 114 +++++++++++++++++++++ 11 files changed, 350 insertions(+), 2 deletions(-) create mode 100644 app/Http/Controllers/UsersController.php create mode 100644 resources/lang/id/auth.php create mode 100644 resources/lang/id/user.php create mode 100644 resources/views/users/index.blade.php create mode 100644 resources/views/users/partials/forms.blade.php create mode 100644 tests/Feature/ManageUsersTest.php diff --git a/app/Http/Controllers/UsersController.php b/app/Http/Controllers/UsersController.php new file mode 100644 index 0000000..430b19f --- /dev/null +++ b/app/Http/Controllers/UsersController.php @@ -0,0 +1,82 @@ +get('action'), ['edit', 'delete']) && $request->has('id')) { + $editableUser = User::find($request->get('id')); + } + + return view('users.index', compact('users', 'editableUser')); + } + + public function store(Request $request) + { + $this->validate($request, [ + 'name' => 'required|max:60', + 'username' => 'required|max:30', + 'password' => 'nullable|between:5,15', + ]); + + $newUserData = $request->only('name','username'); + + if ($request->has('password')) + $newUserData['password'] = $request->get('password'); + else + $newUserData['password'] = 'rahasia'; + + + $user = User::create($newUserData); + + flash(trans('user.created'), 'success'); + + return redirect()->route('users.index'); + } + + public function update(Request $request, $userId) + { + $this->validate($request, [ + 'name' => 'required|max:60', + 'username' => 'required|max:30|unique:users,username,' . $request->segment(2), + 'password' => 'nullable|between:5,15', + ]); + + $userData = $request->only('name','username'); + if ($request->has('password')) + $userData['password'] = $request->get('password'); + + User::findOrFail($userId)->update($userData); + + flash(trans('user.updated'), 'success'); + + return redirect()->route('users.index'); + } + + public function destroy(Request $request, User $user) + { + $this->validate($request, [ + 'user_id' => 'required|exists:users,id|not_exists:transactions,user_id', + ], [ + 'user_id.not_exists' => trans('user.undeleted'), + ]); + + if ($request->get('user_id') == $user->id && $user->delete()) { + flash(trans('user.deleted'), 'success'); + + return redirect()->route('users.index'); + } + + flash(trans('user.undeleted'), 'error'); + + return back(); + } +} diff --git a/app/User.php b/app/User.php index 9831a81..6457fcc 100644 --- a/app/User.php +++ b/app/User.php @@ -15,7 +15,7 @@ class User extends Authenticatable * @var array */ protected $fillable = [ - 'name', 'email', 'password', + 'name', 'username', 'password', ]; /** diff --git a/database/factories/ModelFactory.php b/database/factories/ModelFactory.php index db8fc55..c85a8bd 100644 --- a/database/factories/ModelFactory.php +++ b/database/factories/ModelFactory.php @@ -28,3 +28,17 @@ $factory->define(App\Unit::class, function (Faker\Generator $faker) { 'name' => $faker->name, ]; }); + +/* @var \Illuminate\Database\Eloquent\Factory $factory */ +$factory->define(App\Transaction::class, function (Faker\Generator $faker) { + return [ + 'user_id' => function() { + return factory(App\User::class)->create()->id; + }, + 'invoice_no' => str_random(5), + 'items' => [], + 'customer' => [], + 'payment' => 1000, + 'total' => 1000, + ]; +}); diff --git a/resources/lang/id/auth.php b/resources/lang/id/auth.php new file mode 100644 index 0000000..505debd --- /dev/null +++ b/resources/lang/id/auth.php @@ -0,0 +1,28 @@ + 'Identitas tersebut tidak cocok dengan data kami.', + 'throttle' => 'Terlalu banyak usaha masuk. Silahkan coba lagi dalam :seconds detik.', + 'username' => 'Username', + 'password' => 'Password', + 'login' => 'Login', + 'remember_me' => 'Ingat Login Saya', + 'logout' => 'Keluar', + 'profile' => 'Profil Saya', + 'register' => 'Buat Akun Baru', + 'have_an_account' => 'Saya sudah punya Akun', + 'need_account' => 'Belum punya Akun?', + 'change_password' => 'Ganti Password', + 'forgot_password' => 'Lupa Password?', + 'reset_password' => 'Reset Password', + 'password_confirmation' => 'Ulangi Password', + 'old_password' => 'Password Lama', + 'new_password' => 'Password Baru', + 'new_password_confirmation' => 'Ulangi Password Baru', + 'send_reset_password_link' => 'Kirim Link Reset Password', + 'old_password_failed' => 'Password lama tidak cocok!', + 'old_password_success' => 'Password berhasil diubah!', + 'welcome_please_login' => 'Selamat datang, silakan login', + 'welcome' => 'Selamat datang kembali :name.', +]; diff --git a/resources/lang/id/user.php b/resources/lang/id/user.php new file mode 100644 index 0000000..3149b10 --- /dev/null +++ b/resources/lang/id/user.php @@ -0,0 +1,28 @@ + 'User', + 'list' => 'Daftar User', + 'search' => 'Cari User', + 'not_found' => 'User tidak ditemukan', + 'empty' => 'Belum ada User', + 'back_to_index' => 'Kembali ke daftar User', + + // Actions + 'create' => 'Input User Baru', + 'created' => 'Input User baru telah berhasil.', + 'show' => 'Detail User', + 'edit' => 'Edit User', + 'update' => 'Update User', + 'updated' => 'Update data User telah berhasil.', + 'delete' => 'Hapus User', + 'delete_confirm' => 'Anda yakin akan menghapus User ini?', + 'deleted' => 'Hapus data User telah berhasil.', + 'undeleted' => 'Data User gagal dihapus.', + 'undeleteable' => 'Data User tidak dapat dihapus.', + + // Attributes + 'name' => 'Nama User', + 'username' => 'Username', +]; diff --git a/resources/views/layouts/partials/top-nav.blade.php b/resources/views/layouts/partials/top-nav.blade.php index cefedab..e8b7fdf 100644 --- a/resources/views/layouts/partials/top-nav.blade.php +++ b/resources/views/layouts/partials/top-nav.blade.php @@ -53,6 +53,7 @@