alta usuarios

This commit is contained in:
mynah
2019-03-19 02:56:18 -06:00
parent 3c007024a8
commit 78982db2a5
15 changed files with 254 additions and 25 deletions

View File

@@ -38,7 +38,11 @@ use Dojo::Model::Users;
$r->any('/json/candy/:command')->to('data#candy');
$r->any('/candy')->to('home#candy');
# =============================================================================
# register user ===============================================================
$r->any('/reg')->to('users#reg');
# =============================================================================
# login guest =================================================================
$r->any('/login')->to('users#login');
$r->any('/logout')->to('users#logout');
@@ -46,12 +50,16 @@ use Dojo::Model::Users;
my $logged_in = $r->under('/')->to('users#is_logged');
$logged_in->get('/radio')->to('home#radio');
# =============================================================================
# login user grulla ===========================================================
my $guestp = $r->under('/')->to('users#is_grulla');
$guestp->any('/bcast')->to('home#bcast');
# =============================================================================
# login user grulla ===========================================================
# common grulla user
my $user = $r->under('/')->to('users#is_grulla');
$user->any('/ccast')->to('home#bcast');
# personal
my $guest = $r->under('/')->to('users#is_grulla_tmp');
$guest->any('/bcast')->to('home#bcast');
# =============================================================================
# admin =======================================================================
my $admin = $r->under('/admin')->to('users#is_admin');
$admin->any('')->to('home#admin');

View File

@@ -1,23 +1,47 @@
package Dojo::Controller::Users;
use Mojo::Base 'Mojolicious::Controller';
use Dojo::Support qw{ merge_hash load_module };
use Dojo::Support 'log';
use Email::Valid;
sub login {
sub reg{
my $self=shift;
my $switch=0;
if ($self->param('request')){
# 1=ok, 2=possible spam (simulate ok) 0=failed
$switch = $self->dbg->createu(
$self->param('user'),
$self->param('uname'),
$self->param('tel'),
$self->param('mail'),
$self->param('pass'),
$self->param('passchk')
)}
$self->redirect_to("/login")
unless $switch==0;
$self->stash(layout=>"default");
}
sub login {
my $self = shift;
#falta si el usuario ya está registrado y llama a login.
if (($self->session('ureq')//0) == 4){
$self->stash( css=>["users/login/cssaForm.css"]);
if (($self->session('ureq')//0) == 4){ #admin
$self->stash(template=>'users/logina') ;
$self->stash(layout=>"default");
}
elsif (($self->session('ureq')//0) == 2){
$self->stash( css=>["users/login/cssuForm.css"]);
$self->stash(template=>'users/loginu') ;
elsif (($self->session('ureq')//0) == 1){ #invitado
$self->stash(template=>'users/logini') ;
$self->stash(layout=>"defaultContact");
}
elsif (($self->session('ureq')//0) == 2){ #usuario
$self->session('tmpreq')//0 == 1?
$self->stash(template=>'users/logint'): #temporal (grullas)
$self->stash(template=>'users/loginu'); #registrado
$self->stash(layout=>"defaultContact");
}
else{
$self->stash( css=>["users/login/cssForm.css"]);
$self->stash(template=>'users/loginu') ;
$self->stash(layout=>"defaultContact");
}
my $user = $self->param('uname') // '';
@@ -42,9 +66,15 @@ sub is_admin {
sub is_grulla {
my $self = shift;
return 1 if (($self->session('pmid')//0)>=2);
$self->session(ureq=>2,prev=>$self->url_for);
$self->session(ureq=>2,tmpreq=>0,prev=>$self->url_for);
$self->redirect_to('login');
}
sub is_grulla_tmp{
my $self = shift;
return 1 if (($self->session('pmid')//0)>=2);
$self->session(ureq=>2,tmpreq=>1,prev=>$self->url_for);
$self->redirect_to('login');
}
sub logout {
my $self = shift;

View File

@@ -9,19 +9,44 @@ use Dojo::Conf;
sub new { bless {}, shift }
sub grulla_pass{
return
_read( "select pass as gpass from usuario where nombre like 'grullas'")->[0]
};
sub ugrulla_pass{
my($c,$p)=@_;
_write("update usuario set pass= ? where nombre like 'grullas'",$p);
sub createu{
my ($c,$user,$uname,$tel,$mail,$pass,$passchk)=@_;
my $ttel= $tel =~m/^$/ ? "0000000000" : $tel;
$ttel =~ s/[^\+0-9]//g;
if(
$ttel =~m/\+?[0-9]{10,}/ &&
Email::Valid->address($mail) &&
$user =~m/[a-zA-Z]{3,25}/ &&
$user !~m/\s/ && #mejora este
$uname =~m/[a-zA-Z]{3,50}/ &&
($pass eq $passchk)
){
if(
$user =~m/\s|sex|http|webpage/ &&
$uname =~m/sex|http|webpage/
){ return 2} #possible spam
# $ttel = $tel =~m/^$/? "null";
if ( _write(
"insert into usuario (usuario,nombre,telefono,correo,pass,permiso_id,ultima)
values (?,?,?,?,?,2,now())",
$user,$uname,$ttel,$mail,$pass) == 0){return 0;}
return 1;
}
return 0;
}
sub grulla_pass{
return
_read( "select pass as gpass from usuario where usuario like 'grullas'")->[0]
};
sub ugrulla_pass{
my($c,$p)=@_;
_write("update usuario set pass= ? where usuario like 'grullas'",$p);
}
sub check {
my ($self, $user, $pass) = @_;
my $q="select permiso_id as pid from usuario where nombre = ? and pass=? ";
my $q="select permiso_id as pid from usuario where usuario = ? and pass=? ";
# | 0 | bloqueado |
# | 1 | invitado |
# | 2 | usuario |