modulo de usuarios parte 1

Anuncio
Crear un Sistema de Inventario y Ventas
http://evilnapsis.com
MODULO DE USUARIOS PARTE 1
Voy a dividir el modulo de usuario en 2 partes, en esta primera parte habilitaremos el
modulo de usuarios pero la creacion sera desde codigo SQL, en la segunda
parte habilitaremos una vista intuitiva para que el usuario pueda administrar usuarios
sin tocar codigo SQL.
Vamos a empezar con el desarrollo de nuestro sistema de inventario, lo pimero que
haremos sera habilitar a los usuarios.
Habilitar sesiones
Basta ir al archivo legobox/index.php y agregar la linea session_start(); en la
segunda linea.
Modelo
Localizacion: inventario/core/modules/index/model/UserData.php
[code language="php"]
class UserData {
public static $tablename = "user";
public function UserData(){
$this->name = "";
$this->lastname = "";
$this->username = "";
$this->password = "";
$this->is_active = "0";
$this->created_at = "NOW()";
}
public function add(){
$sql = "insert into ".self::$tablename."
(name,lastname,username,password,is_active,is_admin,created_at) ";
$sql .= "value (\"$this->name\",\"$this->lastname\",\"$this->username\",\"$this>password\",$this->is_active,$this->is_admin,$this->created_at)";
1
Crear un Sistema de Inventario y Ventas
http://evilnapsis.com
Executor::doit($sql);
}
public static function delById($id){
$sql = "delete from ".self::$tablename." where id=$id";
Executor::doit($sql);
}
public function del(){
$sql = "delete from ".self::$tablename." where id=$this->id";
Executor::doit($sql);
}
public function update(){
$sql = "update ".self::$tablename." set name=\"$this->name\",lastname=\"$this>lastname\",username=\"$this->username\",password=\"$this>password\",is_active=$this->is_active,is_admin=$this->is_admin where id=$this>id";
Executor::doit($sql);
}
public static function getById($id){
$sql = "select * from ".self::$tablename." where id=$id";
$query = Executor::doit($sql);
return Model::one($query[0],new UserData());
}
public static function getAll(){
$sql = "select * from ".self::$tablename." order by created_at desc";
$query = Executor::doit($sql);
return Model::many($query[0],new UserData());
}
}
[/code]
2
Crear un Sistema de Inventario y Ventas
http://evilnapsis.com
El modelo de usuarios contiene las funciones para agregar, actualizar, eliminar, mostrar
varios o un usuario.
Layout
Localizacion: inventario/core/modules/index/view/layout.php
El layout contiene el codigo que incluye los archivos css, javascript y el menu principal,
ademas dentro del layout se valida el usuario para mostrar el login o mostrar una vista
especifica basandose en si el usuario inicio o no sesion.
Codigo:
[code language="php"]
<html>
<head>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<meta charset="utf8">
<title>.: Inventario :.</title>
<link rel="stylesheet" type="text/css" href="res/bootstrap/css/bootstrap.min.css">
<script src="res/jquery.min.js"></script>
</head>
<body >
<?php if(Session::getUID()!=""):?>
<header class="navbar navbar-default navbar-fixed-top" role="banner">
<div class="container">
<div class="navbar-header">
<button class="navbar-toggle" type="button" data-toggle="collapse" data-target=".bsnavbar-collapse">
<span class="sr-only">Toggle navigation</span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
<span class="icon-bar"></span>
</button>
<a class="navbar-brand" href="index.php">Inventario </a>
</div>
3
Crear un Sistema de Inventario y Ventas
http://evilnapsis.com
<nav class="collapse navbar-collapse bs-navbar-collapse" role="navigation">
<?php if(Session::getUID()!=""):?>
<ul class="nav navbar-nav">
<li><a href="index.php?view=home"><i class="glyphicon glyphicon-home"></i>
Inicio</a></li>
<li><a href="index.php?view=sell"><i class="glyphicon glyphicon-usd"></i>
Vender</a></li>
<li><a href="index.php?view=products"><i class="glyphicon glyphicon-glass"></i>
Productos</a></li>
<li><a href="index.php?view=sells"><i class="glyphicon glyphicon-shoppingcart"></i> Ventas</a></li>
<li><a href="index.php?view=inventary"><i class="glyphicon glyphicon-stats"></i>
Inventario</a></li>
</ul>
<?php endif; ?>
<?php if(Session::getUID()!=""):?>
<?php
$u=null;
if(Session::getUID()!=""){
$u = UserData::getById(Session::getUID());
$user = $u->name." ".$u->lastname;
}?>
<ul class="nav navbar-nav navbar-right">
<li class="dropdown">
<a href="#" class="dropdown-toggle" data-toggle="dropdown">
<?php echo $user; ?> <b class="caret"></b>
</a>
<ul class="dropdown-menu">
<li><a href="index.php?view=configuration">Configuracion</a></li>
<li><a href="index.php?action=processlogout">Salir</a></li>
</ul>
</li>
</ul>
4
Crear un Sistema de Inventario y Ventas
http://evilnapsis.com
<?php else:?>
<?php endif; ?>
</nav>
</div>
</header><br><br><br>
<div class='container'>
<div class="row">
<div class="col-md-12">
<?php
View::load("login");
?>
</div>
</div>
</div>
<?php else: ?>
<?php
View::load("login");
?>
<?php endif; ?>
<script src="res/bootstrap/js/bootstrap.min.js"></script>
</body>
</html>
[/code]
Vista de Login
Localizacion: inventario/core/modules/index/view/login/widget-default.php
A continuacion el formulario de login que se muestra para que el usuario se
autentifique.
5
Crear un Sistema de Inventario y Ventas
http://evilnapsis.com
Codigo:
[code language="php"]
<br><br><br><br><br>
<div class="row vertical-offset-100">
<div class="col-md-4 col-md-offset-4">
<div class="panel panel-primary">
<div class="panel-heading">
<h3 class="panel-title">Iniciar Sesion</h3>
</div>
<div class="panel-body">
<form accept-charset="UTF-8" role="form" method="post"
action="index.php?action=processlogin">
<fieldset>
<div class="form-group">
<input class="form-control" placeholder="Usuario" name="username" type="text">
</div>
<div class="form-group">
<input class="form-control" placeholder="Contraseña" name="password"
6
Crear un Sistema de Inventario y Ventas
http://evilnapsis.com
type="password" value="">
</div>
<input class="btn btn-lg btn-primary btn-block" type="submit" value="Iniciar Sesion">
</fieldset>
</form>
</div>
</div>
</div>
</div>
<br><br><br><br><br><br><br><br><br><br><br><br>
[/code]
Utilizo un monton de brs para centrar el formulario, al hacer submit en el formulario se
ejecutara el action process login.
Action processlogin
Localizacion: inventario/core/modules/index/action/processlogin/action-default.php
El action process login obtiene los datos provenientes del formulario de login, username
y password, y busca coincidencias en la base de datos, si hay una concidencia entonces
se guarda el id del usuario es la variable de sesion $_SESSION["user_id"] y se redirige a
la pagina del inicio del usuario, en caso contrario se redirige al formulario de login.
Codigo:
[code language="php"]
<?php
if(Session::getUID()=="") {
$user = $_POST['username'];
$pass = sha1(md5($_POST['password']));
$base = new Database();
$con = $base->connect();
$sql = "select * from user where username= \"".$user."\" and password= \"".$pass."\"";
7
Crear un Sistema de Inventario y Ventas
http://evilnapsis.com
$query = $con->query($sql);
$found = false;
$userid = null;
while($r = $query->fetch_array()){
$found = true ;
$userid = $r['id'];
}
if($found==true) {
$_SESSION['user_id']=$userid ;
print "Cargando ... $user";
print "<script>window.location='index.php?view=home';</script>";
}else {
print "<script>window.location='./';</script>";
}
}else{
print "<script>window.location='index.php?view=home';</script>";
}
?>
[/code]
Vista Home
Localizacion: inventario/core/modules/index/view/home/widget-default.php
Cuando el usuario acceda exitosamente con su usuario y password se dirijira a la vista
Home, que estara reservada para lo que el usuario guste, por ahora estara vacia.
8
Crear un Sistema de Inventario y Ventas
http://evilnapsis.com
Podemos ver que en el menu del usuario administrador hay dos opciones, Configuracion
y Salir, la configuracion la veremos en la segunda parte, salir sirve para cerrar la sesion
actual y regregar al formulario de login.
La opcion salir nos redirige al action processlogout.
Action processlogout
Localizacion: inventario/core/modules/index/action/processlogout/action-default.php
El action processlogout destruye la sesion y redirije al formulario de login.
Codigo:
[code language="php"]
if(isset($_SESSION['user_id'])){
unset($_SESSION['user_id']);
}
9
Crear un Sistema de Inventario y Ventas
http://evilnapsis.com
session_destroy();
print "<script>window.location='./';</script>";
[/code]
Conclusion
Ya hemos habilitado el login y logout para el usuario, ahora solo debemos entrar con los
valores:
Username: admin
Password: admin
10
Descargar