Está en la página 1de 32

CRUGE, EXTENSION PARA EL CONTROL DE USUARIOS Y

ROLES
Autor:
Christian Salazar. christiansalazarh@gmail.com,
Edicin:
julio-oct 2012, Acarigua, Edo. Portuguesa, Venezuela
Contribuyen:
Ricardo Andrs !reg"n #$ogot% Colo&!ia, robregonm@gmail.com'
Enlaces.
Re(ositorio de Cruge en $it!uc)et
Re(ositorio de un *e&o Co&(leto
+i $log, con ,arios te&as relacionados.
-ii .ra&e/or) en Es(a0ol 1 .oro 2/itter3 45iienes(anol
Requisitos de Plataforma:
6 P7P Version 8.2.9, 8.:.:, 8.:.8
6 -ii .ra&e/or) 1.10, 1.11, 1.12, 1.1;
INSTALACIN:
Este es un docu&ento (ara e<(la5ar &%s so!re Cruge, las instrucciones de =nstalaci"n se encuentran en
el archi,o REA*+E.&d de Cruge, el cual (uedes conseguir en l>nea en3
htt(s3??!it!uc)et.org?christiansalazarh?cruge
Que es Cruge ?
Cruge te (er&ite ad&inistrar 5 controlar de @or&a &u5 e@iciente 5 segura a tus usuarios 5 los roles Aue
ellos de!an tener en tu A(licaci"n Be!.
Cruge tiene una alta ArAuitectura P, !asada en inter@aces, lo Aue a5uda enor&e&ente a usarla sin
&odi@icar en lo a!soluto su (ro(io core. Si necesitas ca&!iar de R*$+, cruge lo (er&ite. Si
necesitas e<tender el @unciona&iento de autenticacion (ara ad&itir nue,os &etodos ta&!ien lo (er&ite
&ediante la i&(lantacion de @iltros de autenticacion, incluso dis(ones ade&as de @iltros inserta!les (ara
controlar el otorga&iento de una sesion a un usuario 5 @inal&ente (ara controlar los registros 5
actualizaciones de (er@il de tus usuarios. 2odo eso sin tocar en lo a!soluto el core de Cruge.
Cruge es un AP=, Aue inclu5e una inter@az de usuario (redeter&inada con el o!jeto Aue (uedas usar el
siste&a co&o ,iene ahorrandote &ucho tie&(o. Esta inter@az hace uso del AP= de @or&a estricta, es
decir, no ha5 Cde(endencias es(aguettiC las cuales son las (ri&eras destructoras de todo so@t/are.
Da arAuitectura Aue tu usar>as en Cruge es as>3
E2u A(licacionF---GE-ii33a((#'-GuserF acceso a @unciones &u5 !asicas
E2u A(licacionF---GE-ii33a((#'-Guser-GuiF (ro,ee enlaces a @unciones de la inter@az
E2u A(licacionF---GE-ii33a((#'-Guser-Gu&F (ro,ee acceso al control de los usuarios
E2u A(licacionF---GE-ii33a((#'-Guser-Gr!acF (ro,ee acceso a las @unciones de R$AC
interna&ente esta arAuitectura dentro de Cruge es asi3
E2u A(licacionF---GECrugeF---GEAP=F----GE.actor5F----GE&odelosF
esto signi@ica, Aue aun dentro de Cruge las de(endencias son estricta&ente organizadas, es decir, no
,er%s en ningHn lado Aue el AP= ,a5a a instanciar a un &odelo cualAuiera, si eso @uera asi estaria&os
ha!lando de otra Ce<tensionC es(aguetti, co&o aAuellas Aue solo le @uncionan a su creador, o Aue en el
&ejor de los casos, @uncionan...(ero &ani(ulandoles el core.
Cruge es una e<tension en todo lo ancho de la (ala!ra, real&ente e<tiende las @unciones !asicas
de &anejo de usuario de -ii .ra&e/or), incor(orando &as @unciones en los (aAuetes originales.
Da inter@az de usuario de Cruge es o(cional, con esto Auiero decirte Aue (uedes usar Cruge en &odo
AP=, (ara lo cual de!es conocer el &odelo con detalles, aunAue es &u5 intuiti,o 5 de re@erencias cortas,
(ara hacerlo entendi!le.
EJEMPLOS DEL USO DEL API DE CRUGE:
Para usar el AP= de usuarios de Cruge de!es acceder (or3
-ii33a((#'-Guser-Gu&
BUSCAR UN USUARI PR SU USERNA!E o E!AI"
Iusuario J -ii33a((#'-Guser-Gu&-GloadKser#Lad&in4g&ail.co&L,true'M
echo Iusuario-Guserna&eM
true: es para indicar que cargue los valores de los campos personalizados. por defecto es : false.
BUSCAR UN USUARI PR SU I#
Iusuario J -ii33a((#'-Guser-Gu&-GloadKser$5=d#12;,true'M
echo Iusuario-Guserna&eM
CREAR UN USUARI NUE$ USAN# E" API
(u!lic @unction actionAja<CrearKsuario#'N
?? asi se crea un usuario #una nue,a instancia en &e&oria ,olatil'
IusuarioOue,o J -ii33a((#'-Guser-Gu&-Gcreate$lan)Kser#'M
IusuarioOue,o-Guserna&e J Luserna&e1LM
IusuarioOue,o-Ge&ail J Luserna&e14g&ail.co&LM
?? la esta!lece co&o CActi,adaC
-ii33a((#'-Guser-Gu&-Gacti,ateAccount#IusuarioOue,o'M
?? ,eri@ica (ara no du(licar
i@#-ii33a((#'-Guser-Gu&-GloadKser#IusuarioOue,o-Guserna&e' PJ null'
N
echo CEl usuario NIusuarioOue,o-Guserna&eQ 5a ha sido creado.CM
returnM
Q
?? (onerle una cla,e
-ii33a((#'-Guser-Gu&-GchangePass/ord#IusuarioOue,o,C12;:89C'M
?? guarda usando el AP=, la cual hace (asar al usuario (or el siste&a de @iltros.
i@#-ii33a((#'-Guser-Gu&-Gsa,e#IusuarioOue,o''N
echo CKsuario creado3 idJC.IusuarioOue,o-G(ri&ar5Re5M
Q
elseN
Ierrores J C7t&l33errorSu&&ar5#IusuarioOue,o'M
echo Cno se (udo crear el usuario3 C.IerroresM
Q
Q
"E%EN# UN CA!P PERSNA"I&A# #E UN USUARI
-ii33a((#'-Guser-Gu&-Gget.ieldValue#-i33a((#'-Guser-Gid,Lno&!reL'M
(ara el usuario acti,o se (uede usar directa&ente asi3
Ino&!re J -ii33a((#'-Guser-Gget.ield#Lno&!reL'M
B'ENIEN# E" E!AI" #E" USUARI AC'I$
Ie&ail J -ii33a((#'-Guser-Ge&ailM
RECRRIEN# $ARIS USUARIS % "EER SU E!AI"
@oreach#-ii33a((#'-Guser-Gu&-GlistKsers as Iuser'
echo Ce&ailJC.Iuser-Ge&ail.CS!r?GCM
"EER '#S "S CA!PS PERSNA"I&A#S #E UN USUARI
@oreach#Iusuario-G@ields as Ica&(o'
echo CS(Gca&(o3 C.Ica&(o-Glongna&e.C es3 C.Ica&(o-G@ield,alueMCS?(GCMT
ACCE#ER A UN CA!P PERSNA"I&A# #E UN USUARI:
Icedula J -ii33a((#'-Guser-Gu&-Gget.ieldValue#Iusuario,LcedulaL'M
AR!AN# UN C!BB( CN "A "IS'A #E USUARIS RE)IS'RA#S
!S'RAN# "S CA!PS PERSNA"I&A#S
Ico&!oDist J arra5#'M
@oreach#-ii33a((#'-Guser-Gu&-GlistKsers#' as Iuser'N
?? e,itando al in,itado
??
i@#Iuser-G(ri&ar5Re5 JJ CrugeKtil33con@ig#'-GguestKser=d'
!rea)M
?? en este caso L@irstna&eL 5 Llastna&eL son
?? ca&(os (ersonalizados
??
I@irstOa&e J -ii33a((#'-Guser-Gu&-Gget.ieldValue#Iuser,L@irstna&eL'M
IlastOa&e J -ii33a((#'-Guser-Gu&-Gget.ieldValue#Iuser,Llastna&eL'M
Ico&!oDistEIuser-G(ri&ar5Re5F J IlastOa&e.C, C.I@irstOa&eM
Q
echo CKsers3 C.C72+D33dro(*o/nDist#LuserlistL,LL,Ico&!oDist'.CShr?GCM
$ERI*ICAR SI UN USUARI 'IENE ACCES A UN R"+ 'AREA u PERACIN:
i@#-ii33a((#'-Guser-Gchec)Access#Lad&inL''N
...hacer algo...
Q
VARIABLES DEL SISTEMA
Das ,aria!les del siste&a estan contenidas en el &odelo ?cruge?&odels?data?CrugeS5ste&.(h(, son
usadas (ara controlar co&o un usuario inicia sesi"n, o(ciones de registro de usuarios, entre otras.
Das ,aria!les del siste&a se (ueden &odi@icar &ediante el &enu de ad&inistracion (rinci(al, en el ite&
LVaria!les del Siste&aL, las ,aria!les controlan el co&(orta&iento de Cruge, (or eje&(lo, la (antalla de
Registro, detener el siste&a, duracion de la sesi"n, etc.
2a&!ien (uedes acceder a las ,aria!les del siste&a &ediante AP=3
i@#-ii33a((#'-Guser-Gu&-Gget*e@aultS5ste&#'-Ggetn#Lregisterusingca(tchaL'JJ1'N
...
Q
Puedes editar las ,aria!les en l>nea &ediante la KRD3
SU(h( echo -ii33a((#'-Guser-Gui-Guser+anage&entAd&inDin)M UG
En este &enu ,er%s las siguientes o(ciones3
1. *etener Siste&a
si esta acti,ada no se (er&itira iniciar sesion o usar el siste&a en general.
2. Oo Ad&itir Oue,as Sesiones
solo !loAuea el login, es decir nue,as sesiones de usuario.
;. +inutos de *uracion de la Sesion 6
el tie&(o en &inutos en Aue una sesion e<(ira.
:. Registrarse usando ca(tcha
si esta acti,ada (resenta un ca(tcha al &o&ento de registrar a un nue,o usuario.
8. Acti,acion del usuario registrado
o(ciones (ara a(licar al nue,o usuario registrado, (uedes acti,arlo in&ediata&ente, o
&ediante
acti,acion &anual (or (arte de un ad&inistrador, o &ediante un correo de ,eri@icacion.
9. Asignar Rol a usuarios registrados
es el rol Aue tu Auieres Aue se le asigne (or de@ecto al usuario recien registrado.
V. @recer la o(ci"n de Registrarse en la (antalla de Dogin.
Esta o(ci"n ha!ilita el lin) de CregistrarseC en la (antalla de login.
(ara Aue esta o(cion @uncione necesitas actualizar tu !ase de datos con
el siguiente scri(t sAl3
"alter table cruge_system add registrationonlogin integer
default 1;"
W. Registrarse usando ter&inos
si lo acti,as, el usuario Aue se ,a a registrar de!e ace(tar los ter&inos Aue tu indiAues.
X. EtiAueta
si la o(cion anterior esta acti,a se le hara una (regunta, aAui (uedes escri!ir esa
(regunta, (or eje&(lo3 CPor @a,or lea los ter&inos 5 condiciones 5 ace(telos (ara (roceder con su
registroC
10. 2er&inos 5 Condiciones de Registro
El te<to de las condiciones (ara registrarse, solo a(lica si la o(cion de Cregistrarse
usando ter&inosC esta acti,ada.
MANEJANDO ENLACES
Puedes in,ocar al AP= K= de Cruge (ara acceder a los enlaces &ediante3
SU(h( echo -ii33a((#'-Guser-Gui-GgetDoginDin)#Liniciar sesionL'M UG
o si&(le&ente3
SU(h( echo -ii33a((#'-Guser-Gui-GloginDin)M UG
Da lista de enlaces dis(oni!les es3
SU(h( echo -ii33a((#'-Guser-Gui-GloginDin)M UG
SU(h( echo -ii33a((#'-Guser-Gui-GlogoutDin)M UG
SU(h( echo -ii33a((#'-Guser-Gui-G(ass/ordReco,er5Din)M UG
SU(h( echo -ii33a((#'-Guser-Gui-Guser+anage&entAd&inDin)M UG
SU(h( echo -ii33a((#'-Guser-Gui-GregistrationDin)M UG
**lo que no debes hacer es: hacer render de vistas internas de cruge, asi no funciona esto
porque le quitas la programacion cuando tu mismo renderizas las vistas**
Presentando el menu de administracion de usuarios
Este &enu 5a ,iene listo en Cruge, trae todos los ite&s (ara Aue te e,ites el tra!ajo de ir a CrugeKi a
,er cuales son los lin)s. Para acceder al arra5 de &enu ite&s lo haces desde3
SU(h(
Iite&s J -ii33a((#'-Guser-Gui-Gad&in=te&sM
?? ite&s sera una arra5 listo (ara insertar en C+enu, $ootOa,!ar o si&ilares.
UG
Si usas !ootstra(, (uedes hacerlo asi3
SU(h( Ithis-G/idget#L!ootstra(./idgets.$ootOa,!arL, arra5#
L@i<edLJG@alse,
L!randLJGC2u A((C,
Lite&sLJGarra5#
arra5#
LclassLJGL!ootstra(./idgets.$oot+enuL,
Lite&sLJGarra5#-ii33a((#'-Guser-Gui-Gad&in=te&s',
',
',
''M UG
2a&!in se dis(one de3
-ii33a((#'-Guser-Gui-Guser+anage&entAd&inKrl
Da cual !rinda toda la lista de acti,idades a realizarse, de hecho se utiliza co&o (unto de eje&(lo tras
instalar Cruge.
SU(h( Ithis-G/idget#Lzii./idgets.C+enuL,arra5#
Lite&sLJGarra5#
arra5#Lla!elLJGL7o&eL, LurlLJGarra5#L?site?inde<L'',
arra5#Lla!elLJGLA!outL, LurlLJGarra5#L?site?(ageL, L,ie/LJGLa!outL'',
arra5#Lla!elLJGLContactL, LurlLJGarra5#L?site?contactL'',
arra5#Lla!elLJGLAd&inistrar KsuariosL
, LurlLJG%ii::a,,-./0user/0ui/0user!ana1ementAdminUrl
, L,isi!leLJGP-ii33a((#'-Guser-GisYuest',
arra5#Lla!elLJGLDoginL
, LurlLJG-ii33a((#'-Guser-Gui-GloginKrl
, L,isi!leLJG-ii33a((#'-Guser-GisYuest',
arra5#Lla!elLJGLDogout #L.-ii33a((#'-Guser-Gna&e.L'L
, LurlLJG-ii33a((#'-Guser-Gui-GlogoutKrl
, L,isi!leLJGP-ii33a((#'-Guser-GisYuest',
',
''M UG
USO DE LAYOUTS
Cruge te (er&ite Aue su inter@az de usuario (redeter&inada (ueda ajustarse a tu sitio /e! usando lo Aue
en -ii se conoce co&o Da5outs. Por @a,or conoce &as acerca del uso de la5outs en el sitio o@icial de -ii
.ra&e/or), es i&(ortante Aue lo conozcas.
Por eje&(lo, Auieres Aue el @or&ulario de registro de nue,o usuario se (resente en un esAue&a de
dise0o distinto al Aue 5ii trae (or de@ecto, entonces tH (odr>as crear un nue,o la5out Aue se ajuste a tus
necesidades 5 luego indicarle a Cruge &ediante la con@iguraci"n del co&(onente cu%l ser>a ese la5out a
usar cuando un usuario Auiera registrarse, as>3
SU(h(
Lco&(onentsLJG arra5#
..otros ajustes aAui...
LloginDa5outLJGL??la5outs?!ootstra(L,
LregistrationDa5outLJGL??la5outs?!ootstra(L,
Lacti,ateAccountDa5outLJGL??la5outs?!ootstra(L,
LgeneralKser+anage&entDa5outLJGL??la5outs?!ootstra(L,
',
UG
2e cuidado es(ecial con CgeneralKser+anage&entDa5outC3 este es un la5out es(ecial, (orAue las
@unciones de ad&inistracion de usuarios reAuieren un Portlet (ara (resentar las o(ciones
ad&inistrati,as, (or de@ecto Cruge a(unta este ,alor a3 CuiC, el cual es el no&!re de un la5out
(re@a!ricado Aue 5a trae un Portlet, (ractica&ente idendico al Aue -ii trae (or de@ecto lla&ado
??la5outs?colu&n2.
El Da5out (ara K= de Cruge (or de@ecto es3
tua((?(rotected?&odules?cruge?,ie/s?la5outs?ui.(h(
En este la5out #ui.(h(' ha5 un Portlet, Aue ser% llenado con los ite&s de ad&inistraci"n en linea de
Cruge, estos ite&s salen del &odulo K= de Cruge, el cual es accesi!le usando3
-ii33a((#'-Guser-Gui-Gad&in=te&s
CRUGE RBAC
El R$AC Aue Cruge i&(le&enta es el &is&o de -ii .ra&e/or) de @%!rica, sal,o algunos agregados
Aue he notado Aue han sido incor(orados en las nue,as ,ersiones de -ii.
R$AC Es un siste&a de control de acceso !asado en roles #(or sus siglas en ingles'. 2odo el
&ecanis&o R$AC (uede ser &anejado &ediante la inter@az #K=' de Cruge, o &ediante su AP=. Das dos
&odalidades (ara usar en este &ecanis&o son3
Consulta Manual de Permisos.
Es !asica&ente el &is&o &ecanis&o Aue (ro,ee -ii, (ero en Cruge se ha a&(liado un (oco &as. Para
usar este &ecanis&o3 en cualAuier (arte de tu codigo @uente (uedes (oner lo siguiente3
SU(h(
i@#-ii33a((#'-Guser-Gchec)Access#L(uedeZ,erZ&enuZsiste&aL'' N
...&ostar &enu siste&a...
Q
UG
(este mecanismo directo fue incorporado en las mas recientes versiones de Yii, para la fecha de
salida de Cruge al aire no estaba disponible para Yii estndar, antes hab!a que acceder mediante el
componente "uth#anager de Yii$
Consulta Automatizada segun controller/action.
Este &ecanis&o es &u5 Htil, (orAue (er&ite controlar el acceso a tus controllers?actions de @or&a
total&ente auto&atizada 5 controlada &ediante la K= de Cruge. Para usar este &ecanis&o, necesitar%s
incluir en tu Controller #cualAuiera Aue tH uses 5 Aue desees controlar a ni,el de (er&isos' el siguiente
c"digo3
SU(h(
..cuer(o de tu controladora...
(u!lic @unction @ilters#'
N
return arra5#
arra5#LCrugeAccessControl.ilterL',
'M
Q
..cuer(o de tu controladora...
UG
Al usar CrugeAccessControl.ilter estas (er&itiendo Aue Cruge controle el acceso tanto al [controller\
en general co&o al [action\ es(eci@ico.
Eje&(lo3
Kn usuario cualAuiera, incluso un in,itado, intenta acceder a la siguiente KRD3
inde<.(h(UrJe&(leado?,erno&ina.
(ues !ien, Cruge ,eri@icara dos cosas3
a' el acceso a la controladora3 LE&(leadoL.
!' el acceso al action LVerno&inaL.
lo hara de esta @or&a3
a' ,eri@ica si el usuario #aun in,itado' tiene asignada la o(eracion3
LcontrollerZe&(leadoL
!' ,eri@ica si el usuario #aun in,itado' tiene asignada la o(eracion3
LactionZe&(leadoZ,erno&inaL
si a&!as condiciones se cu&(len #a 5 !' entonces tendr% acceso al action.
Si tu quieres dene1ar el total acceso a un controller si&(le&ente no le asignas al usuario la
o(eracion Aue tenga el no&!re del controller antecedido de la (ala!ra LcontrollerZL.
Si tu quieres dene1ar el acceso a un action de un controller si&(le&ente no le asignas al usuario la
o(eracion Aue tenga el no&!re del action3 LactionZno&!recontrollerZno&!reactionL.
Programacion del RBAC: diferencias con otras extensiones.
En el caso de Cruge, la (rogra&acion de R$AC no se hace Casu&iendo Aue un usuario ,a (asar (or
ahi..C #&odo -ii Rights'. En ca&!io en Cruge, de!es Ctratar de hacer (asar al usuario (or donde
AuieresC, este ulti&o &etodo, a &i juicio, es &as seguro (orAue te o!liga a ,eri@icar Aue real&ente el
usuario (udo acceder o no a tal o cual (arte.
Modo de Programacion del RBAC
Para acti,arlo, en la con@iguracion de tu a(licacion de!es considerar estos dos argu&entos3
2rbacSetu,Enabled230true+
Per&itira Aue las o(eraciones se ,a5an creando #,alor true' en la ta!la de la !ase de datos a
&edida Aue ,as (ro!ando el siste&a, de lo contrario de!eras crear las o(eraciones a &ano. Das
o(eraciones Aue se crearan auto&atica&ente seran3 LcontrollerZno&!redetucontrollerL 5
LactionZtucontrollerZtuactionL.
2allo4UserAl4ays230true+
Per&itir% el (aso #,alor true' al usuario aunAue este no tenga (er&iso. Cuando est%s en
(roduccion (onlo en L@alseL lo Aue causara Aue el usuario reci!a una e<ce(ci"n si no dis(one del
(er&iso (ara usar cualAuier rol, tarea u o(eraci"n. Es !ueno (onerlo en 2RKE (ara el &o&ento
en Aue estas con@igurando los (er&isos.
AunAue este atri!uto est en ,alor 2RKE sie&(re (odr%s conocer Aue (er&isos @allaron, de!ido
a Aue (uedes agregar a tu la5out (rinci(al una lla&ada a dis(la5ErrorConsole, asi3
SU(h(
echo -ii33a((#'-Guser-Gui-Gdis(la5ErrorConsole#'M
UG
Usando el LOG
Adicional&ente todos los errores de (er&iso Aue se generen seran re(ortados en el log !ajo el )e5
Lr!acL, (ara (oder ,isualizar los errores en (rotected?runti&e?a((lication.log de!eras con@igurar tu
con@ig?&ain.(h( (ara indicar el )e5 del log3
SU(h(
LlogLJGarra5#
LclassLJGLCDogRouterL,
LroutesLJGarra5#
arra5#
LclassLJGLC.ileDogRouteL,
2le5els2302error+ info+ rbac2+ 66 7/// a1re1ar 2rbac2
',
?? unco&&ent the @ollo/ing to sho/ log &essages on /e! (ages
??arra5#LclassLJGLCBe!DogRouteL',
',
',
UG
eso causara Aue en3
(rotected?runti&e?a((lication.log
se e&itan &ensajes co&o estos3
2012?0V?2V 1832:328 Er!acF Ea((licationF PER+=S RE]KER=*3
in,itado
iduserJ2
ti(o3o(eracion
itemName:action8catalo18ima1e9
i!s de Programacion del RBAC
Cuando Auieras (rogra&ar el R$AC con cruge, usa dos na,egadores3 uno a!ierto con un usuario
ad&inistrador, (ara Aue (uedas ir acti,ando las o(eraciones (ara un rol es(eci@ico a &edida Aue sea
necesario, 5 a!re otro na,egador con el usuario Aue tenga el rol Aue Auieres (rogra&ar. Oo ol,ides
tener acti,ado el @lag3 r!acSetu(Ena!led.
Por eje&(lo, Auieres Aue el usuario LjuanL Aue tiene asignado el rol Le&(leadoZregularL tenga solo acceso
solo a donde Auieres, entonces en el segundo na,egador inicia sesion con LjuanL, 5 tratas de ir al &enu u
o(eracion reAuerida, cruge ira in@or&ando al (ie de la (agina los (er&isos reAuieridos. Duego con el
na,egador Aue tiene a!ierto el usuario Lad&inL entonces ,as ,eri@icando los (er&isos 5 se los asignas al
rol.
Considera Aue cuando r!acSetu(Ena!led esta ha!ilitado, entonces, asu&iendo ade&as Aue no ha5
ninguna o(eracion creada iras ,iendo Aue cruge creara las o(eraciones auto&atica&ente de acuerdo a
donde el usuario LjuanL ,a5a (asando, solo las crea si (re,ia&ente no e<isten.
Eje&(lo3 no ha5 ninguna o(eracion creada, entonces el usuario juan Auiere entrar a Lsite?inde<L, (or
tanto, si la controladora LsiteControllerL esta &anejada con el @iltro3 LCrugeAccessControl.ilterL #,er
te&a &as arri!a' entonces ,eras Aue se creara una o(eracion lla&ada LsiteZcontrollerL 5 otra
LactionZsiteZinde<L, de!eras entonces asignarle estas dos o(eraciones al rol al cual LjuanL (ertenece.
E su!erUsu"r#$
Por de@ecto, cruge considera a un su(erusuario, (ara (ro(osito de ad&inistracion, de(uracion etc.
Para Aue cruge considere a un usuario co&o un Csu(erusuarioC entonces este de!era tener co&o
userna&e el &is&o ,alor con@igurado en Cruge+odule33su(eruserOa&e. Por de@ecto este ,alor ,iene
con@igurado co&o LadminL #con (ass/ord ad&in'
Para ca&!iar este ,alor, al igual Aue otros (ara&etros de Cruge, no de!es ca&!iar nada en
Cruge+odule, sino &ediante
editar3
tua((?(rotected?con@ig?&ain.(h( asi3
5 (oner3
LcrugeLJGarra5#
Lsu(eruserOa&eLJGLad&inistradorL, #su(oniendo Aue no te gusta Lad&inL'
',
Como trata Cruge al su!erusuario "
$asica 5 unica&ente en3 cruge^co&(onents^CrugeBe!Kser.(h(, en el &etodo3 chec)Access, si es un
su(erad&in, entonces sie&(re le dara (er&iso haciendo Aue
%ii::a,,-./0user/0c9ec:Access siem,re retorne true.
Co&o sa!er si esta&os ante un su(erusuario U
Consultando a3
-ii33a((#'-Guser-Gget=sSu(erAd&in#'
o &as corto3
-ii33a((#'-Guser-GisSu(erAd&in
E usu"r#$ I%&#'"($
Cruge hace es(ecial trata&iento al usuario in,itado. Para esto Cruge+odule contiene un atri!uto
lla&ado 1uestUserId , el cual es usado (ara indicarle al siste&a Cruge cual de sus usuarios e<istentes
en la !ase de datos de usuarios es el in,itado.
Por de@ecto cuando Cruge es instalado desde el scri(t de !ase de datos #(rotected?&odules?cruge?data',
se crean dos usuarios3
insert into `cruge_user`(username, email, password, state !alues
("admin", "admin@tucorreo.com","admin",1
,("in!itado", "in!itado","nopassword",1
;
Siendo Lad&inL el usuario con =* 1, 5 siendo Lin,itadoL el usuario con =* 2. Por esto ,eras Aue (or
de@ecto en Cruge+odule.(h( 5a esta (rede@inido el atri!uto guestKser=d en 2. Oo lo ca&!ies a &enos
Aue ca&!ies el =* del usuario in,itado.
Cmo trata Cru1e al usuario in5itado.
Por de@ecto en -== cuando tu lla&as a -ii33a((#'-Guser-Gid esta de,uel,e 0 #cero' cuando un usuario es
in,itado. En Cruge esta &is&a lla&ada a -ii33a((#'-Guser-Gid de,ol,er% al ,alor con@igurado en
Cruge+odule33guestKser=d, el cual de @%!rica es dos #2'.
Puedes con@iar sie&(re en -ii33a((#'-Guser-GisYuest, 5a Aue sta @unci"n considera todo esto (ara
sa!er si el usuario es un in,itado.
TRAS INSTALAR, CON)IGURAR EL USUARIO INVITADO
Esto es i&(ortante3 Si no asignas al usuario in,itado a ningHn rol #(or de@ecto es as>' entonces no
tendr% acceso a ningHn [controller\ Aue este siendo &anejado (or CrugeAccessControl.ilter #&as
arri!a e<(lico acerca de CrugeAccessControl.ilter'. Por tanto tras instalar tu siste&a con Cruge de!es
hacer lo siguiente3
1. Crea un rol lla&ado Lin,itadosL.
2. Asignale a ese rol las o(eraciones necesarias, (or eje&(lo LcontrollerZsiteL, LactionZsiteZinde<L,
LactionZsiteZcontactL, LactionZsiteZloginL 5 otras Aue ,a5as ,iendo Aue se reAuieran #usa el DY'.
;. Asigna este rol creado al usuario in,itado, el cual ,iene de @%!rica.
%ip: &o necesariamente el rol del 'invitado' debe llamarse 'invitado'. (or conveniencia es sano que asi
sea pero no es indispensable.
ENCRIPTADO DE CLAVES
Por de@ecto Cruge trae dos usuarios, ad&in e in,itado. En el caso de ad&in la cla,e es Lad&inL, (or
de@ecto ade&%s Cruge trae la encri(tacion de cla,es desacti,ada, esto es (ara @acilitar el tra!ajo
&ientras se instala.
Para acti,ar o desacti,ar la encri(taci"n se usa el atri!uto LuseEncr5(tedPass/ordL JG @alse #en
tua((?(rotected?con@ig?&ain.(h('
Si Auieres encri(tar las cla,es 5 hacer Aue en la ta!la de usuarios estas no sean ,isi!les, entonces
de!eras to&ar un (aso e<tra3
a' encri(tar tu cla,e de ad&in 5 guardarla ,ia !ase de datos en la ta!la de usuarios #crugeZuser'
de @or&a &anual, &ediante un scri(t sAl directo.
!' luego acti,as la encri(taci"n (oniendo a true el atri!uto useEncr5(tedPass/ord 5 con eso
(odr%s acceder 5 ,er%s Aue los nue,os usuarios Aue se ,a5an creando tendr%n su nue,a cla,e
encri(tada.
M#O$O% $& &'CR(PAC()'
Por de@ecto Cruge encri(ta la cla,e en +*8. Sin e&!argo, este co&(orta&iento es (osi!le &odi@icarlo
desde el archi,o Ctua((?(rotected?con@ig?&ain.(h(C, en la secci"n C&odulesC
LcrugeLJGarra5#
...
LhashL JG Lsha1L,
...
'
Dos ,alores ace(tados (or el (ar%&etro hash son cualAuiera ace(tado (or la @unci"n [hash\ #P7P 8.1_',
(ara &a5or in@or&aci"n de!es ,isitar3 EhashZalgos#'F#htt(3??///.(h(.net?&anual?en?@unction.hash-
algos.(h('. #Yracias a Ricardo Andrs !reg"n'.
EVENTOS DE INICIO, CIERRE Y EXPIRACIN DE SESIN
Puedes hacer Aue Cruge ,a5a a una KRD cuando se inicie sesi"n, se cierre sesi"n, o cuando esta e<(ire.
Esto se con@igura en tu(ro5ecto?(rotected?con@ig?&ain.(h(, all> (uedes colocar las KRD en las
siguientes ,aria!les del &"dulo Cruge3
SU(h(
La@terDoginKrlLJGarra5#L?site?/elco&eL',
La@terDogoutKrlLJGarra5#L?site?(ageL,L,ie/LJGLa!outL',
La@terSessionE<(iredKrlLJGnull,
UG
)#(*+%"&%,: no olvidar el slash inicial -.- sino la url no funcionar.
LOGIN, LOGOUT, SESIONES* CMO )UNCIONA EN CRUGE*
*e!es co&(render Aue ha5 dos estados en un siste&a R$AC est%ndar co&o lo es Cruge3
a' Da autenticaci"n.
Es el estado del siste&a R$AC en el cual se ,eri@>ca Aue un usuario es real&ente Auien dice ser,
se ,eri@ica &ediante un usuario 5 una cla,e, un c"digo, un &ecanis&o de PEO-=* #(ronto ser%
incor(orado en Cruge, al igual Aue .ace!oo)'
!' Da sesi"n.
2ras autenticarse, a un usuario se le asigna un es(acio 5 un tie&(o (ara o(erar en el siste&a. El
tie&(o de la sesi"n se con@igura en las [Varia!les del Siste&a\ #,er te&a al inicio'. 2ras
cu&(lirse el tie&(o, Cruge a!ortar% al usuario e&itiendo el e,ento onSesionE<(ired #de la
clase3 cruge.&odels.@ilters.*e@aultSession.ilter', el cual deri,ar% en una lla&ada a la KRD
a@terSessionE<(iredKrl #,er arri!a'.
Cruge &aneja la sesi"n !ajo una arAuitectura delicada Aue ser% e<(licada a @uturo con &a5or
deteni&iento 5 con so(orte de diagra&as K+D, (or ahora no ,iene al caso detallar tanto.
*e!es sa!er (or tanto Aue Cruge tiene un L@iltro (ara otorgar sesionesL 5 un L@iltro de autenticacionL estos
@uncionan asi3
Pri&ero se (asa (or el @iltro de autenticacion, el cual le da sentido a L-ii33a((#'-Guser-GgetKser#'L, luego
el @iltro de sesi"n ,eri@ica si el siste&a esta a(to (ara reci!ir una nue,a sesi"n, Auiz%s est% en
&anteni&iento o Auiz%s no, (or tanto es el @iltro de sesi"n Auien ahora entra en juego.
Kna ,ez Aue el @iltro de autenticaci"n deter&ina Aue se (uede dar una sesion a Ljuan (erezL, entonces se
le crea una sesion 5 se lla&a a un e,ento lla&ado LonDoginL de la clase
Lcruge.&odels.@ilters.*e@aultSession.ilterL.
Este e,ento de onDogin es Auien esta!lece el ,alor a
SU(h(
-ii33a((#'-Guser-GreturnKrl
UG
el cual es (rocesado (or KiController (ara redirigir el !ro/ser a una (agina Aue tu indicas.
Ahora, i&(ortante, cuando tu haces log@@ &anual&ente, o si (or alguna raz"n tH usando el a(i
est%ndar de -ii haces una lla&ada a
SU(h(
-ii33a((#'-Guser-Glogout#'
UG
,er%s Aue ta&!in ser%s redirigido a la KRD Aue ha5as es(eci@icado en La@terDogoutKrlL, la raz"n de
esto es si&(le3
Cruge es una e<tensi"n real del (aAuete de autenticaci"n est%ndar de -ii .ra&e/or), (or tanto (ara ti
es trans(arente si haces logout o login a &ano o de @or&a auto&%tica.
Con*i*iendo con accessControl filter.
Su(onga&os Aue Auieres Aue tras iniciar sesion e<itosa&ente con Cruge el usuario sea redirigido al
action$ien,enido de siteController #inde<.(h(UrJsite?!ien,enido', (ero utilizando el @iltro
accessControl Aue -ii trae (or de@ecto 5 no &ediante los e,entos de sesi"n Aue te he &ostrado en la
(%gina anterior.
Pues !ien el &etodo Aue aAui descri!o es algo estandar (ara Cruge o (ara -ii en general, no es nada
nue,o.
1. en siteController #en el controller de tu gusto' creas un action el cual des(legara la (agina
Aue solo ,era aAuel usuario Aue ha5a iniciado sesion e<itosa&ente.
SU(h(
(u!lic @unction action$ien,enido#'N
Ithis-Grender#L!ien,enidoL'M
Q
UG
2. en siteController usas el @iltro accessControl 5 los rules #Aue ,ienen de caja en -ii', asi3
SU(h(
(u!lic @unction @ilters#'
N
return arra5#
LaccessControlL,
'M
Q
(u!lic @unction accessRules#'
N
return arra5#
arra5#Lallo/L,
LactionsLJGarra5#Linde<L,LcontactL,Lca(tchaL',
LusersLJGarra5#L6L',
',
arra5#Lallo/L,
LactionsLJGarra5#L!ien,enidoL',
LusersLJGarra5#L4L',
',
arra5#Lden5L, ?? den5 all users
LusersLJGarra5#L6L',
',
'M
Q
UG
con esto le estas diciendo a tu a(licacion Aue (ara el action Csite?!ien,enidoC se reAuiere Aue el usuario
de!a ha!er iniciado sesion e<itosa&ente # con cruge o con 5ii tradicional, a&!os @uncionan (or la
&is&a ,ia de autenticacion, (or eso 5 &as Cruge es una e<tension real 5 no solo un &onton de codigo
raro '.
*e este &odo, si un usuario in,itado (resiona el enlace CloginC entonces tu lo en,ias a site?!ien,enido,
si no ha iniciado sesion se le (ediran credenciales 5 luego se le en,iara a la ,ista site?!ien,enido. (or
tanto el (aso ; es reAuerido, a continuacion3
;. @inal&ente sustitu5e tu enlace a login (or un enlace a site?!ien,enido.
;ue suceder< =
#(odria&os di!ujar esto co&o un diagra&a de secuencia en K+D'
a' 2u in,itado ,isita tu /e!site #no ha iniciado sesion aun (or eso es un in,itado' 5
sigue el enlace LloginL o Liniciar sesionL Aue tu has (ro,isto #5 Aue a(unta a site?!ien,enido co&o
dice el (aso ;'.
!' 2u in,itado sera redirigido auto&atica&ente a Cinde<.(h(UrJcruge?ui?loginC #o a la url de login del
siste&a Aue este registrado (ara autenticar, en este caso Cruge', esto de!ido al CaccessControlC
Aue i&(le&entaste en el (aso 2.
c' Duego tras iniciar sesion e<itosa&ente sera redirigido auto&atica&ente a Cinde<.(h(U
rJsite?!ien,enidoC,
#@unciona asi de!ido a Aue en el (aso 2 al detectarse Aue no se ha iniciado sesion entonces se esta!lecio
el ,alor de returnKrl a Csite?!ien,enidoC, (or tanto cuando Cruge o -ii estandar hacen un login correcto
redirigen a tu usuario a la direccion Aue tenga al&acenada en returnKrl, en este caso site?!ien,enido'
Co&o has ,isto Cruge es un siste&a orAuestado (ara tra!ajar en conjunto con el actual siste&a
estandar de autenticacion de -ii, (or eso co&o dije antes es una e<tension3 (orAue e<tiende la
@uncionalidad !asica de -ii a un ni,el &as alto.
)ILTROS
Cruge (er&ite Aue se (ueda e<tender &%s all% usando @iltros. E<isten ,arios ti(os de @iltros, todos se
instalan en con@ig?&ain 5 dis(onen de una inter@az #inter@ace' Aue de!es res(etar, a continuaci"n la lista
de @iltros, si necesitas crear un @iltro nue,o @>jate en co&o est% hecho el @iltro (or de@ecto3
*iltros de autenticacin:
(er&ite Aue a&(lies co&o se !usca un usuario (ara ser autenticado. Se u!ican en3
(rotected^&odules^cruge^&odels^auth^CrugeAuth*e@ault.(h(
*iltros de sesin:
(er&ite Aue (uedas controlar co&o se entrega una sesion a un usuario, inclusi,e (uedes denegarla. Se
u!ican en3
(rotected^&odules^cruge^&odels^@ilters^*e@aultSession.ilter.(h(
*iltro de actuali>acin:
(er&ite sa!er si un usuario actualizo su (er@il. Se u!ican en3
(rotected^&odules^cruge^&odels^@ilters^*e@aultKser.ilter.(h(
*e!ido a lo e<tenso de Cruge no he tenido tie&(o de docu&entar !ien estos @iltros, (ero es !astante
intuiti,o, aunAue (ronto ir docu&entandolo en detalle.
Da idea (rinci(al a cu!rir con los @iltros es Aue &ediante con@ig?&ain tu (uedas decirle a Cruge cuales
@iltros ,a a usar, (ara Aue estos hagan el tra!ajo Aue tu necesitas (ero sin tocar ni &odi@icar el core de
Cruge, en ca&!io usando el conce(to de ,erride de la (rogra&aci"n orientada a o!jetos #P'.
EL ENVIO DE CORREOS CON CRUGEMAILER
Cruge+ailer es un co&(onente Aue en,>a correos Cen !ase a ,istas de -iiC, de @or&a centralizada,
dejandole a una sola @unci"n la res(onsa!ilidad de decidir (or d"nde o c"&o se en,>a el correo #si es
(or (h(&ailer o (or &ail directo'. Ade&%s, te a5uda a &odelar las @unciones de negocio (ara Aue sea
@%cil usarlas. Por eje&(lo, (odr>as in,ocar a
-ii33a((#'-Gcruge&ailer-Gen,iarE&ailOue,aCla,e#Iusuario'M
(es un e/emplo, esta funci0n no e1iste en Cruge, pero si vers otras similares$
En (ri&er lugar ol,ida (or co&(leto el hecho de Aue Cruge lla&e a la @unci"n &ail#' (or todos lados
(ara en,iar un e&ail. Eso ser>a un error de dise0o, (or tanto, el uso de e&ails esta @uerte&ente
&odelado usando un co&(onente lla&ado [cruge&ailer\, el cual es accedido desde dentro de cruge as>3
-ii33a((#'-Gcruge&ailer
Cruge+ailer no solo est% hecho (ara Cruge, sino (ara toda tu a(licaci"n. Puedes a&(liar el
conoci&iento acerca de Cruge+ailer le5endo3
htt(s3??githu!.co&?5ii@ra&e/or)enes(anol?cruge&ailer
Cruge+ailer se con@igura asi #5a lo hiciste al con@igurar a Cruge al inicio' 3
Lcruge&ailerLJGarra5#
LclassL JG La((lication.&odules.cruge.co&(onents.Cruge+ailerL,
L&ail@ro&L JG Le&ail-desde-donde-Auieres-en,iar-los-&ensajes4<<<<.co&L,
Lsu!ject(re@i<L JG L2u Enca!ezado del asunto - L,
Lde!ugL JG true,
',
Co&o te he co&entado (odr%s usar a -ii33a((#'-Gcruge&ailer desde toda tu a(licaci"n, no solo Cruge,
(ara eso @ue dise0ado. Do (ri&ero Aue de!es co&(render acerca de Cruge+ailer es Aue es un
co&(onente Aue en,>a correos Cen !ase a ,istas de -iiC, es decir, se crea una ,ista 5 se le indica a
Cruge+ailer Aue &ande ese correo a un destinatario de la &is&a &anera en co&o tu renderizar>as una
,ista en -ii.
Caso de eje&(lo3
1. ]uieres crear un nue,o correo es(eci@ico !asado en una ,ista, (or tanto, creas una clase
Aue e<tienda de Cruge+ailer, la lla&arias (or eje&(lo3 C+iClaseCruge+ailerC 5 su(on Aue la guardas
en tu directorio de L(rotected?co&(onents?+iClaseCruge+ailer.(h(L #PPno dentro de cruge &odulePP'
2. Esta clase contendr>a un nue,o &todo lla&ado Cnue,oCorreoAlClienteC, he aAu> la !ondad de
Cruge+ailer, te (er&ite C&odelar la solucionC d%ndole a ese &todo un no&!re coherente con aAuello
Aue Auieres hacer, eso hace Aue tu c"digo sea ordenado 5 sie&(re sa!r%s Au hace, ade&%s de (oder
reutilizarlo en cualAuier &o&&ento.
;. En Ccon@ig?&ainC le indicar>as al co&(onente cruge&ailer Aue use esa nue,a clase en ,ez de la Aue
,iene (or de@ecto. Se ca&!iar>a (or3 LclassL JG La((lication.co&(onents.+iClaseCruge+ailerL,
Para in,ocar esa @unci"n tu solo har>as lo siguiente3
-ii33a((#'-Gcruge&ailer-Gnue,oCorreoAlCliente#IusuarioSeleccionado,CasuntoC'M
otro eje&(lo3
-ii33a((#'-Gcruge&ailer-GelStoc)7aCa&!iado#IusuarioSeleccionado,CholaC'M
]ue contendria ese nue,o &etodo U #nue,oCorreoAlCliente', algo tan si&(le co&o3
(u!lic @unction nue,oCorreoAlCliente#Iusuario,Iasunto'N
?t9is/0sendemail#Iusuario-Ge&ail,Iasunto,
?t9is/0render#Len,iarcla,eL,arra5#LdataLJGIusuario'
'
'M
Q
Es muy im,ortante que te fi@es en dos cosas:
1' Se usa a: ?t9is/0sendemail. Oo andas (oniendo aAu> 5 (or todas (artes tu &todo es(ec>@ico
de correo, en ca&!io Ccentralizas el en,>o de correos hacia una @unci"n sende&ailC Aue (odr>as dejar
(or de@ecto co&o ,iene o Aue (odr>as e<tender tH en esta nue,a clase Aue has creado3
+iClaseCruge+ailer.
2' Se usa a: ?t9is/0render, este &todo reci!e el no&!re de una ,ista la cual tiene la @or&a
ht&l Aue se en,iar% (or correo, esa @or&a, al igual Aue cualAuier ,ista de -ii reci!e (or argu&entos un
arra5 con los (ar%&etros Aue ser%n accesi!les en la ,ista. 2al cual co&o lo hace -ii en su &ecanis&o de
,istas.
"o que no debes 9acer es3 sustituir Ithis-Gsende&ail (or una &ont"n de c"digo Aue s"lo sir,a (ara
una ,ez en la ,ida... (orAue estar>as &atando el conce(to de enca(sula&iento del &odelado de o!jetos,
aca!ando con el tra!ajo de todos aAuellos Aue hacen de la (rogra&aci"n orientada a o!jetos un arte.
A ;ue se lo1ra al usar a Cru1e!ailer =:
Se logra Aue tH hagas en,>os de correos orientados a tu &odelo de negocio, sin hacer es(aguetti con el
c"digoPP, centralizando 5 enca(sulando el c"digo... todos tus correos in,ocar%n a sendE&ail...5 no
tendr%s Aue crear 5 du(licar o tri(licar el es@uerzo de escri!ir las @unciones de correo.
Se logra Aue (uedas clari@icar el codigo...en,ias un correo con un (ro(osito &u5 de@inido3
-ii33a((#'-Gcruge&ailer-Gnue,oCorreoAlCliente#Iusuario, CholaC'
Se logra Aue en cualAuier &o&ento (uedas decidir (or cual ,ia se en,ia el correo, si (or &ail#' o (or
(h(&ailer#' o (or cualAuier otra Aue tu decidas..solo ca&!iando un &etodo..sin hacer es(aguetti
#codigo interde(endiente necio 5 o@uscado Aue solo co&(lica la ,ida 5 ter&ina aca!ando con la ,ida
del (ro5ecto entero'.
+uieres cam,iar el metodo mail-. !or otro de tu !referencia. / C0mo
1acerlo "
#Por @a,or lee acerca de Cruge+ailer (ara Aue conozcas a Au &e re@iero aAu>'
Crearias una nue,a clase Aue e<tiende de Cruge+ailer, har>as un ,erride o So!recarga de la @unci"n
CsendE&ailC Aue 5a cruge&ail trae (re-con@igurada, solo Aue ahora cada ,ez Aue tus @unciones Aue 5a
has creado lla&en a sendE&ail lla&ar%n entonces a esta nue,a 5 no a la Aue ,iene (or de@ecto.
ERRORES )RECUENTES
BBCEDce,cion: no se ,udo 9allar el sistema de confi1uracion+ qui>a la tabla cru1e8system esta
5acia o 9a indicado un identificador de sistema ineDistente.CBB
Este error es generado cuando se ha instalado cruge (ero la ta!la crugeZs5ste& no tienen ningun dato.
(or de@ecto cuando el scri(t sAl se instala (or (ri&era ,ez este trae datos (ara crugeZs5ste&.
CrugeZs5ste& es una @ila Aue in@or&a acerca de la ,aria!les de un siste&a, (ueden crearse ,arias
con@iguraciones a las cuales se les hace re@erencia (or su no&!re, si en con@ig?&ain ha5 una re@erencia
a esta con@iguracion 5 esta no e<iste en crugeZs5ste& entonces este error a(arecera.
BBCEDce,cin: ,or fa5or cambie las referencias a 2useridentity2 ,or 2cru1euser2CBB
Cuando ocurre U
cuando ejecutas3 htt(3??localhost?tua((?inde<.(h(UrJsite?login, llenas el @or& de login 5 le das clic a
Ace(tar. Eso causar` la e<ce(cion.
Por Au ocurre U
Esto sucede (rinci(al&ente (orAue estas usando el @or&ulario de login (or de@ecto de -ii, en ca&!io
de!es usar el de Cruge, al cual se accede &ediante3
SU(h( echo -ii33a((#'-Guser-Gui-GloginDin)M UG
Sucede (orAue (or de@ecto el @or&ulario de login de 5ii lla&a a -ii33a((#'-Guser-Glogin (asandole
co&o argu&ento a una instancia de autenticacion Aue i&(le&enta el &odelo !asico de -ii 5 no el de
Cruge, lo escri!o as> (ara e<(licarlo en (ala!ras cortas. E<(licandolo &as all%, tiene Aue ,er con Aue
(or de@ecto -ii crea un @or&ulario cu5o &odelo i&(le&enta a Cne/ Kser=dentit5C entonces este
Kser=dentit5 ,a a in,ocar a Cruge 5 este ulti&o lo desconoce (orAue no es una instancia con la Aue
(ueda tra!ajar.
I+,N
Si ,es, Cruge escri!e los &ensajes en es(a0ol, &ientras Aue su c"digo esta en ingls. 2odos los
&ensajes se dirigen a la clase Cruge2ranslator33t#C&ensaje en es(a0olC', (or tanto ese es el (unto (ara
traducir a otro idio&a. En un @uturo nue,o co&&it se har%n traducciones. Pronto.
DIAGRAMAS UML DE CRUGE
Es i&(ortante conocer c"&o esta dise0ado Cruge, (ara esto (ro,eer tres diagra&as i&(ortantes, no
son todos, ha5 &%s, (ero estos son los indis(ensa!les (ara conocer Au sucede cuando se hace clic) en
CDoginC3
En este (ri&ero diagra&a se &uestran las clases Aue est%n in,olucradas en el (roceso de autenticaci"n
#junto a su relacion con otras clases'. Estos dia1ramas est<n en lEnea en el re,ositorio de Cru1e.
En el segundo diagra&a (uedes o!ser,ar Aue sucede en lineas generales cuando se (resiona el !oton
login.
.inal&ente aAui ha5 una secuencia en el tie&(o 5 una ,ista de las clases in,olucradas, este diagra&a se
lee de izAuierda a derecha, arri!a en los cuadros grandes al to(e se listan las clases in,olucradas, de
cada clase sale una linea ,ertical larga de la cual a su ,ez salen @lechas hacia otras clases, esas @lechas
son acciones a realizarse, lla&adas, etc.
#IA)RA!AS EN "INEA
htt(s3??!it!uc)et.org?christiansalazarh?cruge?do/nloads?screenshots.gi@
htt(s3??!it!uc)et.org?christiansalazarh?cruge?do/nloads?*iagra&a-de-clases-(roceso-de-
autenticacion2.(ng
htt(s3??!it!uc)et.org?christiansalazarh?cruge?do/nloads?diagra&a-de-acti,idad--autenticaion.(ng
htt(s3??!it!uc)et.org?christiansalazarh?cruge?do/nloads?diag.secuencia-de-login2.(ng

También podría gustarte