Uvodna prihlasovacia stranka
- cujan
- Člen | 410
Caute, mam projekt v ktorom potrebujem pouzit prihlasovanie…
Celu sablonu mam zadefinovanu v @layout.latte...do ktorej ncludujem potom
dalsie sablony a potreboval by som pred tuto sablonu vsunut prihlasovaciu
stranku…to znamena, ak clovek pride na stranku, nech mu nabehne najpr
prihlasenie…
ide to nejako?
- cujan
- Člen | 410
Danny napsal(a):
Já jsem to vyřešil tak že pro mojí přihlašovací šablonu in.latte jsem si vytvořil @login_layout.latte kde jsem si nadefinoval vzhled a pak pouze v in.latte jsem místo {block content}{/block} přidal {layout '@login_layout.latte'}
Je to to, co potřebuješ?
oki, ale default routing mas upraveny ako? aby ako prva stranka sa ti natiahla @login_layout.latte?
- Danny
- Člen | 146
@login_layout.latte
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<div id="login-page" class="row">
<div class="col s12 z-depth-6 card-panel">
{block content}
{/block}
</div>
</div>
</body>
</html>
@in.latte
{layout '@login_layout.latte'}
{block title}Přihlášení{/block}
{form login}
{block content}
{/block}
Něco jako takhle?
- cujan
- Člen | 410
Danny napsal(a):
@login_layout.latte
<!DOCTYPE html> <html lang="en"> <head> </head> <body> <div id="login-page" class="row"> <div class="col s12 z-depth-6 card-panel"> {block content} {/block} </div> </div> </body> </html>
@in.latte
{layout '@login_layout.latte'} {block title}Přihlášení{/block} {form login} {block content} {/block}
Něco jako takhle?
ano len mi to nefunguje, je dolezite, ze in.latte zacina @ ?
- cujan
- Člen | 410
cujan napsal(a):
Danny napsal(a):
@login_layout.latte
<!DOCTYPE html> <html lang="en"> <head> </head> <body> <div id="login-page" class="row"> <div class="col s12 z-depth-6 card-panel"> {block content} {/block} </div> </div> </body> </html>
@in.latte
{layout '@login_layout.latte'} {block title}Přihlášení{/block} {form login} {block content} {/block}
Něco jako takhle?
ano len mi to nefunguje, je dolezite, ze in.latte zacina @ ?
u mna to mam tak
@login_layout.latte
<?php
<!DOCTYPE html>
<html lang="en">
<head>
</head>
<body>
<div id="login-page" class="row">
<div class="col s12 z-depth-6 card-panel">
{block content}
{/block}
</div>
</div>
</body>
</html>
?>
in.latte
<?php
{layout '@login_layout.latte'}
<h1 n:block=title>Sign in</h1>
{control signInForm}
{block content}
?>
Editoval cujan (14. 4. 2016 12:20)
- cujan
- Člen | 410
super funguje to krasne, len mam kus problem, s prihlasenim…meno heslo
sedi aj s db, a dostavam hlasku vkuse
The username or password you entered is incorrect.
a pritom ak si v UserManager.php dumpnem credentials
dump($credentials);
tak mi krasne meno aj heslo vypise…
je pravda, ze ked som vkladal manualne usera do db tak som mu nechal vygenerovat
hash heslo cez web, ale v credentials mi ho prelozi normalne…
- David Matějka
- Moderator | 6445
Co pouzivas za hashovaci metodu u hesla (ukaz authenticator)? mas dostatecne velky sloupecek?
- cujan
- Člen | 410
pouzivam vstavany z sanboxu
tu je moj UserManager.php – su tam aj tie majo dumpy
<?php
namespace App\Model;
use Nette;
use Nette\Security\Passwords;
/**
* Users management.
*/
class UserManager extends Nette\Object implements Nette\Security\IAuthenticator
{
const
TABLE_NAME = 'users',
COLUMN_ID = 'id',
COLUMN_NAME = 'username',
COLUMN_PASSWORD_HASH = 'password',
COLUMN_ROLE = 'role';
/** @var Nette\Database\Context */
private $database;
public function __construct(Nette\Database\Context $database)
{
$this->database = $database;
}
/**
* Performs an authentication.
* @return Nette\Security\Identity
* @throws Nette\Security\AuthenticationException
*/
public function authenticate(array $credentials)
{
list($username, $password) = $credentials;
dump($credentials);
dump($username);
dump($password);
$row = $this->database->table(self::TABLE_NAME)->where(self::COLUMN_NAME, $username)->fetch();
if (!$row) {
throw new Nette\Security\AuthenticationException('The username is incorrect.', self::IDENTITY_NOT_FOUND);
} elseif (!Passwords::verify($password, $row[self::COLUMN_PASSWORD_HASH])) {
throw new Nette\Security\AuthenticationException('The password is incorrect.', self::INVALID_CREDENTIAL);
} elseif (Passwords::needsRehash($row[self::COLUMN_PASSWORD_HASH])) {
$row->update(array(
self::COLUMN_PASSWORD_HASH => Passwords::hash($password),
));
}
$arr = $row->toArray();
unset($arr[self::COLUMN_PASSWORD_HASH]);
return new Nette\Security\Identity($row[self::COLUMN_ID], $row[self::COLUMN_ROLE], $arr);
}
/**
* Adds new user.
* @param string
* @param string
* @return void
*/
public function add($username, $password)
{
try {
$this->database->table(self::TABLE_NAME)->insert(array(
self::COLUMN_NAME => $username,
self::COLUMN_PASSWORD_HASH => Passwords::hash($password),
));
} catch (Nette\Database\UniqueConstraintViolationException $e) {
throw new DuplicateNameException;
}
}
}
class DuplicateNameException extends \Exception
{}
?>
- David Matějka
- Moderator | 6445
ano, v tom je problem. Nette pouziva bcrypt, zahashovat to muzes treba touhle metodou: https://api.nette.org/…sswords.html#…
- cujan
- Člen | 410
David Matějka napsal(a):
ano, v tom je problem. Nette pouziva bcrypt, zahashovat to muzes treba touhle metodou: https://api.nette.org/…sswords.html#…
kedze nemam form na vkladanie udajov o users, tak som pouzil tuto stranku na vygenerovanie bcrypt
https://www.bcrypt-generator.com/
nastavil som hodnoty na admin , heslo vygenerovalo…ael neprihlasilo ma zatial…
dikes
Editoval cujan (14. 4. 2016 13:35)
- David Matějka
- Moderator | 6445
nette pouziva 2y verzi, tvou poslany server generuje starou 2a verzi.
Formular na to nepotrebuje, proste si dumpni tu hodnotu
anebo pouzij treba 3v4l https://3v4l.org/hLp91
- cujan
- Člen | 410
David Matějka napsal(a):
nette pouziva 2y verzi, tvou poslany server generuje starou 2a verzi.
Formular na to nepotrebuje, proste si dumpni tu hodnotu
anebo pouzij treba 3v4l https://3v4l.org/hLp91
oki pouzil som 3v4l
a po zadani admin, ktory output mam pouzit?
Vdaka