ArtiGrid
v1.5

Login


<?php
    $grid = new ArtiGrid();
    $html = '
    <div class="container d-flex justify-content-center align-items-center">
        <div class="col-md-8 col-lg-4">
            <div class="card shadow-lg border-0">
                <div class="card-body p-4">
                    <h4 class="text-center mb-4">
                        Login Example
                    </h4>
                    <div class="mb-3">
                        <label class="form-label">User *</label>
                        {user}
                    </div>
                    <div class="mb-3">
                        <label class="form-label">Password *</label>
                        {password}
                    </div>
                    <div class="d-grid">
                        {action}
                    </div>
                </div>
            </div>
        </div>
    </div>';
    $grid->setSelectFormTemplate($html);
    $grid->table('users')
        ->template('bootstrap5')
        ->required(false)
        ->validation_required('user')
        ->validation_required('password')
        ->formFields(['user','password']);
    echo $grid->render('select');
?>

//Create the file users.php in this path: callbacks/users.php
return [
    'beforeSelect' => [
        ['callback' => 'login', 'file' => 'functions.php'],
    ]
];


//in functions.php 
function login($data){
    if (session_status() === PHP_SESSION_NONE) {
        session_start();
    }

    $db = DB::connect();

    $user = trim($data['user'] ?? '');
    $pass   = trim($data['password'] ?? '');

    if ($user === '' || $pass === '') {
        return [
            'success' => false,
            'message' => 'Empty username or password'
        ];
    }

    $q = new Queryfy($db);
    $row = $q->table('users')
            ->where('user', $user)
            ->limit(1)
            ->get();

    $row = $row[0] ?? null;

    if ($row && password_verify($pass, $row['password'])) {
        $_SESSION['user'] = [
            'id'      => $row['id'],
            'rol'     => $row['rol'],
            'usuario' => $row['user']
        ];

        return [
            'success' => true,
            'message' => 'Successful login',
            'redirect' => 'https://google.cl'
        ];
    }

    return [
        'success' => false,
        'message' => 'Incorrect username or password'
    ];
}

// in front end

<script>
document.addEventListener('artigrid_select_form_response', function(e){
    const { response } = e.detail;
    console.log("Answer:", response);
    if (response.success && response.data?.success) {
        if (response.data?.redirect) {
            window.location.href = response.data.redirect;
        }
    } else {
        const msg = response.data?.message || response.message || 'Unknown error';
        Swal.fire({
            icon: 'error',
            title: 'Error',
            text: msg,
            confirmButtonText: 'Accept'
        });
    }
});
</script>

Login Example

user: demo

password: 123456