Laravel.io
<?php

namespace App\Http\Controllers;

use App\Models\Gender;
use App\Models\UserDetail;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Validator;
use App\User;
use Illuminate\Support\Facades\Hash;
class Authentication extends Controller
{



    public function index($data = null)
    {
        if (Auth::check()) {
            return redirect()->route("homepage");
        }

        if (!isset($data)) {
            return view("tjejerfragor/auth/login");
        } else {
            return view("tjejerfragor/auth/login")->with("status", $data);
        }
    }

    public function registerIndex($data = null)
    {
        if (Auth::check()) {
            return redirect()->route("homepage");
        }
        if (!isset($data)) {
            return view("tjejerfragor/auth/register");
        } else {
            return view("tjejerfragor/auth/register")->with("status", $data);
        }

    }


    public function Register(Request $request)
    {
        $validate = Validator::make($request->all(), [
            "name" => "required|max:50",
            "username" => "required|min:6|max:50|alpha_dash",
            'email' => 'required|string|email|max:255|unique:users',
            'password' => 'required|string|min:6|confirmed',
            'gender' => 'required|max:5',
        ]);

        if ($validate->fails()) {
            return response()->json([
                "status" => false,
                "auth" => false,
                "message" => $validate->errors()->first()
            ]);
        }

        $user = User::create([
            "name" => $request->input("name"),
            "username" => $request->input("username"),
            "email" => $request->input("email"),
            "password" => bcrypt($request->input("password")),
            "activated" => 0
        ]);
        $this->guard()->login($user);

        return response()->json([
            "status" => true,
            "auth" => true,
            "message" => "youre now registered"
        ]);

    }

    protected function guard()
    {
        return Auth::guard();
    }

    public
    function Login(Request $request)
    {

        $validate = Validator::make($request->all(), [
            "email" => "required|email|string|max:255",
            "password" => "required",
            "remember" => "nullable"
        ]);

        if ($validate->fails()) {
            return response()->json([
                "status" => false,
                "auth" => false,
                "message" => $validate->errors()->first()
            ]);
        }

        $auth = Auth::attempt([
            "email" => $request->email,
            "password" => $request->password,
            "activated" => 1,
        ]);

        if ($auth) {
            return response()->json([
                "status" => true,
                "auth" => true,
                "message" => "welcome back: " . Auth::user()->username
            ]);
        } else {
            return response()->json([
                "status" => false,
                "auth" => false,
                "message" => "username or password is wrong.
            ]);
        }

    }
}

Please note that all pasted data is publicly available.