Autenticazione e registrazione personalizzata

Salve , per studio e per esigenza volevo creare una autenticazione/registrazione ad hoc in cui inserivo un numero maggiore di campi nel model user .

Mi rendo conto però che sono ad un livello molto basso .

Inanzi tuttto ho creatro il mio db user con i campi :

id,username,password,nome[null],cognome[null],telefono[null],email,lastvisit,admin,attivo.

Ho creato il model con gii.

Ho creato poi un controller in cui uso il model user.

Devo ora creare nel models 2 form , uno per il login che chiede username o email e pw .

L’altro per la registrazione in cui metto tutti i campi.

Ora vengono i problemi :

nel login di sitecontroller ho :

!\Yii::$app->user->isGuest (che so che dice che se l’utente non è non autenticasto) ma non capisco da dove viene…già non capisco Yii::$app(so che i :: sono per un metodo statico).

Normalmente se non utilizzassi il framework passerei i valori(controllati lato client per lunghezze varie ecc.) tramite Post e li confronterei con il database se esatti salverei l’user in una variabile di sessione.

Qui altra domanda vedo che nel loginForm ho $this->rememberme .Come fa yii a immagazzinare i dati dell’utente per un tot di tempo?

Ho altre domande ma per ora mi fermop qui .

Ciao, ti rispondo da neofita quindi prendi tutto con le "molle"

  1. Yii nasce già con un modulo "basic" di login e la parte Yii::$app->user->isGuest viene gestita da questo modulo. Se non vuoi usare questo modulo e farne uno da zero è ovvio che devi anche preoccuparti di "riempire" queste variabili, prima di poterle usare. In altre parole quando il tuo utente si logga devi settare opportunamente la proprietà isGuest.

  2. Anche io ho l’esigenza di avere più campi a disposizione. Però perchè crearti da zero quando puoi trovare già estensioni che fanno questo?

Ad esempio io uso Yii2 amnah user che prevede appunto questa funzionalità

A mio avviso il tuo valore aggiunto lo devi impiegare per sviluppare le cose "proprie" della tua applicazione che la contraddistinguono dalle altre. Mentre per le parti "comuni a tutte" ti conviene partire dalle estensioni che trovi che al 90% son solo da installare e configurare e solo un 10% da personalizzare.

La differenza grossa secondo me sta nel fatto che se prendi un’estensione che utilizzano altre 1.000 persone,è più facile che sia migliormente debuggata e continuamente patchata, mentre se ti fai il tuo codice, devi anche preoccuparti di gestire quella parte lì.

Io uso da poco il framework, ma dalla mia poca esperienza, ho imparato che devi "inserirti nella sua logica" per sfruttare al massimo i benefici che ne derivano.

Saluti

Grazie per la risposta .ho risolto utilizzando l advanced e inserendo manualmente nel model e nei form i campi necessari .non ho ancora capito come far si che solo l admin si l’oggi al back end…

Prima di andare troppo avanti a tentativi cerca di comprendere alcuni concetti base altrimenti ti ritroverai un’app che funzionicchia ma non saprai mai bene come… e debuggarla sarà poi impossibile.

Tramite Yii::$app riesci ad accedere ai componenti della tua app, nella guida hai una descrizione chiara del tutto.

Compreso questo intuisci che Yii::$app->user è un componente della tua app, di default è (\yii\web\User) che puoi però estendere a tuo piacimento, per capire come estenderlo e perché è necessario capire come funziona l’autenticazione e le autorizzazioni.

Una volta capito il tutto segui i consiglio di Federico, cioè operazioni generiche come l’autenticazione e la gestione delle access list possono essere spesso risolte con estensioni testate e valide già sviluppate dalla comunità!

Seguendo questa guida :

http://www.yiiframework.com/wiki/771/rbac-super-simple-with-admin-and-user/

ho risolto per la parte backend accessibile solo dall’amministratore.

Ora vorrei far puntare un link nel menu (admin in layout/main) del frontend al login del backend,Ho provato con path assoluti ma non funziona ho provato con ../ ma niente .Come faccio?