Autentifikacia – previazanie na profilovu tabulku
Upozornění: Tohle vlákno je hodně staré a informace nemusí být platné pro současné Nette.
- freespirit
- Člen | 7
Ahojte,
robim svoj prvy projekt v nette a narazil som na jednu vec pri autentifikacii –
uzivatela overujem proti tabulke user, v ktorej mam cid vazbu na tabulku company. Potreboval by som aby pri autentifikacii natiahlo do objektu uzivatela aj data z tabulky company, ale nie som si uplne isty, ako tuto vazbu spravit.
Autentifikaciu mam riesenu cez IAuthenticator (v config.neon mam pridany service Nette\Security\IAuthenticator: UsersModel)
class UsersModel extends BaseModel implements IAuthenticator
{
/**
* Performs an authentication
* @param array
* @return NIdentity
* @throws NAuthenticationException
*/
public function authenticate(array $credentials)
{
list($username, $password) = $credentials;
$row = dibi::select('*')->from('users')->where('email=%s', $username)->fetch();
if (!$row) {
throw new NAuthenticationException("User '$username' not found.", self::IDENTITY_NOT_FOUND);
}
if ($row->password !== $this->calculateHash($password)) {
throw new NAuthenticationException("Invalid password.", self::INVALID_CREDENTIAL);
}
unset($row->password);
return new NIdentity($row->id, $row->role, $row);
}
}
dakujem
- freespirit
- Člen | 7
tak som na to nakoniec prisiel sam..
v auth metode –
$row = dibi::select('users.*, company.name as company')->from('users')->join('company')->on('users.company_id=company.id')->where('email=%s', $username)->fetch();
a v template –
<div id="login">
Prihlásený ako <strong>{$user->getIdentity()->company}</strong> [{= implode(', ', $user->roles)}] | <a n:href="sign:out">odhlásiť</a>
</div>
Editoval freespirit (6. 4. 2011 15:29)