diff --git a/lib/Dojo.pm b/lib/Dojo.pm index 36c1178..fe54e20 100755 --- a/lib/Dojo.pm +++ b/lib/Dojo.pm @@ -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'); diff --git a/lib/Dojo/Controller/Users.pm b/lib/Dojo/Controller/Users.pm index bc8a87e..b19137b 100755 --- a/lib/Dojo/Controller/Users.pm +++ b/lib/Dojo/Controller/Users.pm @@ -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; diff --git a/lib/Dojo/Model/Users.pm b/lib/Dojo/Model/Users.pm index ab105f6..044cb18 100755 --- a/lib/Dojo/Model/Users.pm +++ b/lib/Dojo/Model/Users.pm @@ -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 | diff --git a/public/users/login/cssaForm.css b/public/users/login/forma.css similarity index 100% rename from public/users/login/cssaForm.css rename to public/users/login/forma.css diff --git a/public/users/login/cssForm.css b/public/users/login/formi.css similarity index 100% rename from public/users/login/cssForm.css rename to public/users/login/formi.css diff --git a/public/users/login/cssuForm.css b/public/users/login/formt.css similarity index 100% rename from public/users/login/cssuForm.css rename to public/users/login/formt.css diff --git a/public/users/login/formu.css b/public/users/login/formu.css new file mode 100755 index 0000000..2213f77 --- /dev/null +++ b/public/users/login/formu.css @@ -0,0 +1,66 @@ +section.hero{ + height: calc(100vh - 50px); + min-height:730px; + background-repeat: no-repeat; + background-attachment: fixed; + background-size:cover; + background-image:url("puerta.jpg"); + background-position: center center; + +} +section.reg{ + background:black; + margin-top:30px; + padding-top:10px; + padding-bottom:10px; +} +section.reg:hover{ + background:#c22a39; + cursor: pointer; +} + +article.login{ + background: rgba(33, 33, 33, 0.8); + color:white; + margin: auto 0px auto auto; + padding: 1px 0px; + text-align: center; + min-width: 300px; + max-width: 500px; + width: 36%; + min-height: 100vh; +} + +article.login p{ +margin: 10vh auto 20px; +font-size: 2em; +} + +article.login form{ + font-size:1.2em; + width:80%; + margin:auto; +} + +label{ + display:block; + margin:10px 5px 15px 10px; +} + +form.login > input{ + width: 100%; + height: 10vh; + font-size: 1.3em; + max-height: 50px; +} + +form.login > input#submit { + display:block; + margin:30px auto; + width:200px; + height:60px; +} +a,a:visited { + text-decoration: none; + color: inherit; +} diff --git a/public/users/reg/formr.css b/public/users/reg/formr.css new file mode 100755 index 0000000..9863a1e --- /dev/null +++ b/public/users/reg/formr.css @@ -0,0 +1,53 @@ +section.hero{ + height: calc(100vh - 25px); + min-height:730px; + background-repeat: no-repeat; + background-attachment: fixed; + background-size:cover; + background-image:url("puerta.jpg"); + background-position: center center; +} + +article.reg{ + background: rgba(33, 33, 33, 0.8); + color:white; + margin: auto auto auto auto; + padding: 1px 0px; + text-align: center; + min-width: 300px; + max-width: 500px; + width: 36%; + min-height: 100vh; +} + +article.reg p{ +margin: 10vh auto 20px; +font-size: 2em; +} + +article.reg form{ + font-size:1.2em; + width:80%; + margin:auto; +} + +label{ + display:block; + text-align:left; + margin:10px 5px 15px 10px; +} + +form.reg > input{ + width: 100%; + height: 10vh; + font-size: 1.3em; + max-height: 50px; +} + +form.reg > input#submit { + display:block; + margin:30px auto; + width:200px; + height:60px; +} + diff --git a/public/users/reg/puerta.jpg b/public/users/reg/puerta.jpg new file mode 100755 index 0000000..2560d6a Binary files /dev/null and b/public/users/reg/puerta.jpg differ diff --git a/readme b/readme index d2622b9..0fc22ee 100755 --- a/readme +++ b/readme @@ -5,5 +5,6 @@ DBI Hash::Merge Path::Class DBD::Mysql +Email::Valid djavu sans mono book 10 diff --git a/templates/users/logina.html.ep b/templates/users/logina.html.ep index 9d804db..f11149f 100755 --- a/templates/users/logina.html.ep +++ b/templates/users/logina.html.ep @@ -1,3 +1,4 @@ +%stash css=>["/users/login/forma.css"];

Admin

diff --git a/templates/users/login.html.ep b/templates/users/logini.html.ep similarity index 92% rename from templates/users/login.html.ep rename to templates/users/logini.html.ep index 2d7db14..67166ba 100755 --- a/templates/users/login.html.ep +++ b/templates/users/logini.html.ep @@ -1,3 +1,4 @@ +%stash css=>["/users/login/formi.css"];