diff --git a/app/Http/Controllers/Auth/RegisterController.php b/app/Http/Controllers/Auth/RegisterController.php
index 9897320c8097e769ee5bc4db40492adc3db84449..54d3c51d76d2c165c29b996a6066e3831e2fc4a4 100644
--- a/app/Http/Controllers/Auth/RegisterController.php
+++ b/app/Http/Controllers/Auth/RegisterController.php
@@ -81,13 +81,13 @@ class RegisterController extends Controller
         }
     }
 
-    public function registerUser(Request $request) {
-        $data = $request->all();
+    public function registerUser(array $data) {
+
         $username = $data['username'];
         if(User::where('username',$username)->count()>0) {
             echo '<div class="alert alert-warning alert-dismissible fade show text-center">
                     <button type="button" class="close" data-dismiss="alert">&times;</button>
-                    This user <strong>already exist.</strong>
+                    User ' . $username . ' <strong>already exist.</strong>
                   </div>';
             return view('auth.register');
         } else if(strlen($data['username']) > 18){
@@ -103,25 +103,72 @@ class RegisterController extends Controller
                   </div>';
             return view('auth.register');
         } else {
-           $user = $this->create($data);
-           $role = $data['role'];
-           if($role == User::ROLE_DOSEN) {
-               Dosen::create(['id'=>$user->id]);
-           }else if($role == User::ROLE_MAHASISWA) {
-               $id_kelas_tesis = KelasTesis::orderByRaw('updated_at - created_at DESC')->first();
-               Mahasiswa::create(['id'=>$user->id, 'id_kelas_tesis'=>$id_kelas_tesis->id]);
-           } else if($role == User::ROLE_MANAJER) {
-               Manajer::create(['id'=>$user->id]);
-           }
-            echo '<div class="alert alert-success alert-dismissible fade show text-center">
-                    <button type="button" class="close" data-dismiss="alert">&times;</button>
-                    <strong>Success !</strong> New user has successfully registered!
-                  </div>';
-           return view('auth.register');
+            $user = $this->create($data);
+            $role = $data['role'];
+            if($role == User::ROLE_DOSEN) {
+                Dosen::create(['id'=>$user->id]);
+            } else if ($role == User::ROLE_MAHASISWA) {
+                $id_kelas_tesis = KelasTesis::orderByRaw('updated_at - created_at DESC')->first();
+                Mahasiswa::create(['id'=>$user->id, 'id_kelas_tesis'=>$id_kelas_tesis->id]);
+            } else if ($role == User::ROLE_MANAJER) {
+                Manajer::create(['id'=>$user->id]);
+            }
+                echo '<div class="alert alert-success alert-dismissible fade show text-center">
+                        <button type="button" class="close" data-dismiss="alert">&times;</button>
+                        <strong>Success !</strong> New user has successfully registered!
+                    </div>';
+            return view('auth.register');
         }
-//        echo $id;
+    }
 
+    public function massRegister(String $filename, String $role) {
+        $file = fopen($filename, 'r');
 
+        while (($line = fgetcsv($file, 1000, ",")) !== FALSE) {
+            $data['name'] = $line[0];
+            $data['username'] = $line[1];
+            $data['email'] = $line[2];
+            $data['phone'] = $line[3];
+            $data['password'] = $line[4];
+            $data['role'] = $role;
+            $this->registerUser($data);
+        }
+        
+        fclose($file);
     }
 
+    public function registerUsers(Request $request) {
+        $data = $request->all();
+
+        if (isset($_FILES["file"])) {
+            $file = $_FILES["file"];
+            //if there was an error uploading the file
+            if ($file["error"] > 0) {
+                echo '<div class="alert alert-success alert-dismissible fade show text-center">
+                        <button type="button" class="close" data-dismiss="alert">&times;</button>
+                        <strong>File Error!</strong> Please try to reupload the file.
+                      </div>';
+                return view('auth.register');
+            }
+            else {
+                $extension = explode(".", $file["name"]);
+
+                if (end($extension) != 'csv') {
+                    echo '<div class="alert alert-success alert-dismissible fade show text-center">
+                            <button type="button" class="close" data-dismiss="alert">&times;</button>
+                            <strong>File Error!</strong> Extension of the file must be csv.
+                          </div>';
+                    return view('auth.register');
+                }
+                else {
+                    $this->massRegister($file["tmp_name"], $data["role"]);
+                    return view('auth.register');
+                }
+            }
+        }
+        else {
+            $this->registerUser($data);
+            return view('auth.register');
+        }       
+    }
 }
diff --git a/resources/views/auth/register.blade.php b/resources/views/auth/register.blade.php
index bcc6f7ec4438e5ab13d62c96c3f86b5db5242288..6ff9c8dd47445bd2f7ac3aa3b124b58044fa8e5a 100644
--- a/resources/views/auth/register.blade.php
+++ b/resources/views/auth/register.blade.php
@@ -104,6 +104,56 @@
                 </div>
             </div>
         </div>
+
+        <!-- mass register -->
+        <div class="col-md-8">
+            <div class="card">
+                <div class="card-header">Mass Register</div>
+
+                <div class="card-body">
+                    Upload CSV file with format:
+                    name, NIM, e-mail, phone, password
+                    <form method="POST" action="/register" enctype="multipart/form-data">
+                        @csrf
+
+                        <div class="form-group row">
+                            <label for="role" class="col-md-4 col-form-label text-md-right">Role</label>
+                            
+                            <div class="col-md-6">
+                                <select type="text" id="role" name="role" class="form-control">
+                                    <option value="Mahasiswa">Mahasiswa</option>
+                                    <option value="Dosen">Dosen</option>
+                                    <option value="Manajer">Manajer</option>
+                                </select>
+                            </div>
+                        </div>
+
+                        <div class="form-group row">
+                            <label for="file" class="col-md-4 col-form-label text-md-right">File</label>
+
+                            <div class="col-md-6">
+                                <input id="file" type="file" name="file" class="form-control{{ $errors->has('file') ? ' is-invalid' : '' }}" name="name" value="{{ old('name') }}" required autofocus>
+
+                                @if ($errors->has('file'))
+                                    <span class="invalid-feedback">
+                                        <strong>{{ $errors->first('file') }}</strong>
+                                    </span>
+                                @endif
+                            </div>
+                        </div>
+
+                        <div class="form-group row mb-0">
+                            <div class="col-md-6 offset-md-4">
+                                <button type="submit" class="btn btn-primary">
+                                    Register
+                                </button>
+                            </div>
+                        </div>
+                    </form>
+                </div>
+            </div>
+        </div>
+
     </div>
 </div>
 @endsection
diff --git a/routes/web.php b/routes/web.php
index 0c8ba7b91ca95216a58edac90647f55d96d75676..638df8d65fe9908d3c7ca3acb80a2c2536246f41 100644
--- a/routes/web.php
+++ b/routes/web.php
@@ -35,7 +35,8 @@ Route::post('mahasiswa/edit/{id}', 'MahasiswaController@edit');
 
 
 Route::get('register','Auth\RegisterController@showForm')->name('register');
-Route::post('register','Auth\RegisterController@registerUser')->name('registerPost');
+Route::post('register','Auth\RegisterController@registerUsers')->name('registerPost');
+
 
 Route::get('/home', 'HomeController@index')->name('home');
 Route::get('/generate/admin', 'Auth\RegisterController@generateAdmin');