Skip to content
Advertisement

Laravel 5 – How to check username & password is match with table?

I have created the below login form in Laravel 5 and I want to simply check if the username & password matches with that of the database table and if so, redirect to the dashboard page else stay on the login page. I am also trying to find the solution by myself but I am posting this question to get an idea of how to do these things in Laravel 5.

Any idea??

2015_09_10_050324_admin_details.php (migrations)

<?php

use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;

class AdminDetails extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('admin_details', function (Blueprint $table) {
            $table->increments('id');
            $table->string('name');
            $table->string('username')->unique();
            $table->string('email')->unique();
            $table->string('password', 60);
            $table->integer('status');
            $table->rememberToken();
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('admin_details');
    }
}

Database structure

enter image description here

enter image description here

login.blade.php (view)

<form name="frmLogin" action="{{ URL::to('administrator/userAuthentication') }}" method="post">
    <input name="_token" type="hidden" value="{{ csrf_token() }}"/>
    <div class="form-group has-feedback">
        <input type="text" name="username" id="username"class="form-control" placeholder="Username">
        <span class="glyphicon glyphicon-envelope form-control-feedback"></span>
    </div>
    <div class="form-group has-feedback">
        <input type="password" name="password" id="password" class="form-control" placeholder="Password">
        <span class="glyphicon glyphicon-lock form-control-feedback"></span>
    </div>
    <div class="row">
        <div class="col-xs-4">
            <button type="submit" class="btn btn-primary btn-block btn-flat">Login</button>
        </div><!-- /.col -->
    </div>
</form>

AdminLoginController.php (controller)

    <?php

namespace AppHttpControllers;
use IlluminateHttpRequest;
use AppHttpRequests;
use Auth;
use AppHttpControllersController;
use AppAdminLoginModel;


class AdminLoginController extends Controller
{
    /**
     * Display a listing of the resource.
     *
     * @return Response
     */
    public function index()
    {
        return view('backend.login');
    }

    /**
     * Handle an authentication attempt for admin user.
     *
     */
    public function userAuthentication(Request $request)
    {

        if (Auth::attempt(array('username' => $request->username, 'password' => $request->password))){
            return "success";
        }else{
            return "Wrong Credentials";
        }
        die;
    }
}

AdminLoginModel.php (model)

    <?php
/*namespace App;
use DB;
use IlluminateDatabaseEloquentModel;*/

namespace App;

use IlluminateAuthAuthenticatable;
use IlluminateDatabaseEloquentModel;
use IlluminateAuthPasswordsCanResetPassword;
use IlluminateContractsAuthAuthenticatable as AuthenticatableContract;
use IlluminateContractsAuthCanResetPassword as CanResetPasswordContract;

class AdminLoginModel extends Model implements AuthenticatableContract, CanResetPasswordContract
{
    use Authenticatable, CanResetPassword;

    protected $table = 'admin_details';
    protected $fillable = ['username', 'password'];
}

routes.php

<?php

/*
|--------------------------------------------------------------------------
| Application Routes
|--------------------------------------------------------------------------
|
| Here is where you can register all of the routes for an application.
| It's a breeze. Simply tell Laravel the URIs it should respond to
| and give it the controller to call when that URI is requested.
|
*/

Route::get('/', function () {
    return view('welcome');
});

Route::resource('dashboard','DashboardController');
Route::resource('administrator','AdminLoginController');
Route::resource('users','AdminLoginController');
Route::resource('administrator/userAuthentication', 'AdminLoginController@userAuthentication');

Advertisement

Answer

try like this

login.blade.php

<!DOCTYPE html>
<html>
<head>
    <link rel="stylesheet" href="//netdna.bootstrapcdn.com/bootstrap/3.0.0/css/bootstrap.min.css">
</head>
<body>
<div class="container">
<h3>Login Form</h3>  

{!! Form::open(array('url' => 'login', 'method' => 'post')) !!}
<div class="form-group">
    {!! Form::label('UserName') !!}
    {!! Form::text('username', null,
        array(
              'class'=>'form-control',
              'placeholder'=>'Your UserName')) !!}
</div> 
<div class="form-group">
    {!! Form::label('password') !!}
    {!! Form::text('password', null,
        array(
              'class'=>'form-control',
              'placeholder'=>'Your Password')) !!}
</div>

<div class="form-group">
    {!! Form::submit('Login',
      array('class'=>'btn btn-primary')) !!}
</div>
{!! Form::close() !!}

</div>
</body>
</html>

Model:-

<?php namespace App;

use IlluminateAuthAuthenticatable;
use IlluminateDatabaseEloquentModel;
use IlluminateAuthPasswordsCanResetPassword;
use IlluminateContractsAuthAuthenticatable as AuthenticatableContract;
use IlluminateContractsAuthCanResetPassword as CanResetPasswordContract;

class UserRegisters extends Model implements AuthenticatableContract, CanResetPasswordContract { 
    use Authenticatable, CanResetPassword;
    protected $table = 'userregisters';
    protected $fillable = ['user_name', 'password'];
}
?>

Controller:-

<?php namespace AppHttpControllers;
use Input;
use AppHttpRequests;
use AppUser;
use AppUserRegisters;
use AppUserProfiles;
use Validator;
use View;
use Auth;
use AppHttpControllersRedirect;
use Session;
use Hash;
use DB;

class UserRegisterController extends Controller
{
    /**
     * Login a Registered Users.
     *
     */
    public function login(){
        $uname = Input::get('username');
        $password = Input::get('password');
            if (Auth::attempt(array('user_name' => $uname, 'password' => $password))){
            return "success";
            }
            else {        
                return "Wrong Credentials";
            }
        }
    }
}   

route:-

Route::post('/login', 'UserRegisterController@login');

migration:-

<?php

use IlluminateDatabaseSchemaBlueprint;
use IlluminateDatabaseMigrationsMigration;

class Userregisters extends Migration
{
    /**
     * Run the migrations.
     *
     * @return void
     */
    public function up()
    {
        Schema::create('userregisters', function($table)
        {
            $table->increments('id');
            $table->string('first_name', 128);
            $table->string('last_name', 128);
            $table->string('user_name', 128);
            $table->string('password', 128);
            $table->string('email', 128);
            $table->timestamps();
        });
    }

    /**
     * Reverse the migrations.
     *
     * @return void
     */
    public function down()
    {
        Schema::drop('userregisters');
    }
}

let me know if there any errors.

User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement