Skip to main content

Inicio

Docs Version Dropdown

Artify es un framework creado para facilitar el uso y agilizar el desarrollo web, esta equipado con muchas funciones que facilitaran el tiempo de desarrollo. Algunas caracteristicas son:

  • Generador de Módulos
  • Generador de PDF con la clase Docufy
  • Ejecución de comandos por consola para crear controladores, modelos, vistas, crud, middleware, servicios.
  • Migraciones de base de datos con comandos por consola
  • Api Rest para conectar aplicaciones con seguridad de Tokens
  • Mantenedores Crud con menos código o por comandos de CMD
  • Versión de php utilizada en este framework 7.4.29

Autor

Estructura del framework

Docs Version Dropdown

Login de acceso

Docs Version Dropdown

Código que genera el Login

<?php

public function index(){
$configuracion = HomeController::configuracion();

$artify = DB::ArtifyCrud();
$artify->addPlugin("bootstrap-inputmask");
$html_template = '
<div class="container mt-5">
<div class="row d-flex justify-content-center">
<div class="col-xl-6">
<div class="card px-5 py-5 shadow-lg" id="form1">
<p class="mb-3 mt-3 text-center font-weight-bold">Acceso Usuarios</p>
<center><img class="w-25" src="'.$configuracion[0]["logo_login"].'"></center>
<p class="mb-3 mt-3 text-center font-weight-bold">Nombre App</p>
<div class="form-data" v-if="!submitted">
<div class="form-group">
<label>Usuario</label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text btn btn-light"><i class="fa fa-user"></i></span>
</div>
{usuario}
</div>
<p class="ertify_help_block help-block form-text with-errors"></p>
</div>
<div class="form-group">
<label>Contraseña</label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text btn btn-light"><i class="fa fa-key"></i></span>
</div>
{password}
</div>
<p class="ertify_help_block help-block form-text with-errors"></p>
</div>
<div class="mb-2"> <button v-on:click.stop.prevent="submit" class="btn btn-success w-100 botones">Acceder</button> </div>
<a class="btn btn-info btn-block" href="'.$_ENV["BASE_URL"].'registrar">Registrarse</a>
<a class="btn btn-info btn-block" href="'.$_ENV["BASE_URL"].'recuperar">Recuperar Clave</a>
</div>
</div>
</div>
</div>
</div>';
$artify->set_template($html_template);
$artify->fieldCssClass("rut", array("rut"));
$artify->buttonHide("submitBtn");
$artify->buttonHide("cancel");
$artify->fieldCssClass("rut", array("rut"));
$artify->fieldCssClass("usuario", array("usuario"));
$artify->fieldTypes("password", "password");
$artify->addCallback("before_select", [$this, "login_usuarios"]);
$artify->setLangData("login", "Ingresar");
$login = $artify->dbTable("usuario")->render("selectform");
$mask = $artify->loadPluginJsCode("bootstrap-inputmask",".rut", array(
"mask"=> "'9{1,2}.9{3}.9{3}-(9|k|K)'",
"casing" => "'upper'",
"clearIncomplete" => "true",
"numericInput"=> "true",
"positionCaretOnClick" => "'none'"
));

$stencil = new ArtifyStencil();
echo $stencil->render('login', [
'login' => $login,
'mask' => $mask
]);
}

public function login_usuarios($data, $obj) {
$pass = $data['usuario']['password'];
$user_or_rut = $data['usuario']['usuario'] ?? $data['usuario']['rut'] ?? null;

if ($user_or_rut) {
$queryfy = $obj->getQueryfyObj();
$field = isset($data['usuario']['rut']) ? "rut" : "usuario";
$queryfy->where($field, $user_or_rut);
$hash = $queryfy->select("usuario");

if ($hash) {
if (password_verify($pass, $hash[0]['password'])) {
@session_start();
$_SESSION["data"] = $data;
$obj->setLangData("no_data", "Bienvenido");

date_default_timezone_set("America/Santiago");
$fecha = date("Y-m-d");
$hora = date("H:i:s");

$queryfy->insert("logs", array(
"modulo" => "Login",
"accion_realizada" => "Acceso al sistema",
"usuario" => $_SESSION["data"]["usuario"]["usuario"],
"fecha" => $fecha,
"hora" => $hora,
"observaciones" => "Sin Observaciones"
));
} else {
echo "El usuario o la contraseña ingresada no coinciden";
die();
}
} else {
if (isset($data['usuario']['rut'])) {
echo "El RUT ingresado no coincide";
} else {
echo "El usuario ingresado no existe";
}
die();
}
} else {
echo "Datos erróneos";
die();
}

return $data;
}

?>

Recuperar Contraseña


<?php

public function reset(){
$artify = DB::ArtifyCrud();
$html_template = '
<div class="container mt-5">
<div class="row d-flex justify-content-center">
<div class="col-xl-6">
<div class="card px-2 py-2 shadow-lg" id="form1">
<h3 class="titulo">Recuperar Clave</h3>
<center><img class="w-25" src="'.$_ENV["BASE_URL"].'theme/img/login.png"></center>
<p class="mb-3 mt-3 text-center font-weight-bold">Libro de Pabellón</p>
<div class="form-data" v-if="!submitted">
<div class="form-group">
<label>Correo</label>
<div class="input-group">
<div class="input-group-prepend">
<span class="input-group-text btn btn-light"><i class="fa fa-envelope-o"></i></span>
</div>
{email}
</div>
<p class="mt-2 font-weight-bold text-center">Ingresa tu correo para recuperar tu clave</p>
<p class="ertify_help_block help-block form-text with-errors"></p>
</div>
<div class="mb-2"> <button v-on:click.stop.prevent="submit" class="btn btn-success w-100">Recuperar</button> </div>
<a class="btn btn-info btn-block" href="'.$_ENV["BASE_URL"].'login">Acceder</a>
</div>
</div>
</div>
</div>
</div>';
$artify->set_template($html_template);
$artify->buttonHide("submitBtn");
$artify->buttonHide("cancel");
$artify->fieldRenameLable("email", "Correo");
$artify->fieldAddOnInfo("email", "before", '
<div class="input-group-append">
<span class="input-group-text" id="basic-addon1">
<i class="fa fa-envelope-o"></i>
</span>
</div>
');
$artify->addCallback("before_select", [$this, "recuperar_clave"]);
$artify->formFields(array("email"));
$artify->setLangData("login", "Recuperar");
$reset = $artify->dbTable("usuario")->render("selectform");

$stencil = new ArtifyStencil();
echo $stencil->render('reset', [
'reset' => $reset
]);
}

public function recuperar_clave($data, $obj){
$email = htmlspecialchars($data['usuario']['email']);

if(empty($email)){
echo "Ingrese un correo para Recuperar su contraseña";
die();
}

$queryfy = $obj->getQueryfyObj();
$queryfy->where("email", $email);
$hash = $queryfy->select("usuario");

if ($hash) {
$pass = $queryfy->getRandomPassword(15, true);
$encrypt = password_hash($pass, PASSWORD_DEFAULT);

$queryfy->where("id", $hash[0]["id"]);
$queryfy->update("usuario", array("password" => $encrypt));

$emailBody = "Correo enviado tu nueva contraseña es: $pass";
$subject = "Nueva Contraseña de acceso al sistema de Procedimentos";
$to = $email;

//$queryfy->send_email_public($to, 'daniel.telematico@gmail.com', null, $subject, $emailBody);
DB::PHPMail($to, "daniel.telematico@gmail.com", $subject, $emailBody);
$obj->setLangData("success", "Correo enviado con éxito");
}

return $data;
}

?>