#INCLUDE COMUN.H #INCLUDE MVC.H Define Class LoginController As Custom oDBController = Null oControllerSetari = Null oUtilizator = Null *!* oFirma = Null oView = Null nTipLogin = Null cFormLogin = Null cProcLogin = Null nTipVerificare = 0 *!* 0 = verificare utilizator si parola *!* 1 = verificare utilizator si parola cu id-ul dat ca parametru *!* 2 = verificare utilizator si parola cu nivelul dat ca parametru nIdUtil = Null nNivelAcces = Null cExplicatie = "Autentificare" cRestaurant = Null *********************************************************************** Procedure Init Lparameters toDbController,toControllerSetari,tnTipVerificare,tnParametru,tcDenumire This.oDBController = toDbController This.oControllerSetari = toControllerSetari This.oUtilizator = Createobject("UtilizatorModel") *!* This.oFirma = CREATEOBJECT("FirmaModel") This.nTipLogin = 2 This.cFormLogin = [Login] + Iif(This.nTipLogin=2,[CodBare],[]) This.cProcLogin = [Login] + Iif(This.nTipLogin=2,[CodBare],[]) This.nTipVerificare = IIF(TYPE('tnTipVerificare')<>'N',0,tnTipVerificare) Do Case Case This.nTipVerificare = 1 This.nIdUtil = tnParametru This.nNivelAcces = Null This.cExplicatie = This.cExplicatie + [ ] + ALLTRIM(tcDenumire) Case This.nTipVerificare = 2 This.nNivelAcces = tnParametru This.nIdUtil = Null This.cExplicatie = This.cExplicatie + [ nivel minim : ] + ALLTRIM(tcDenumire) Otherwise This.oDBController.setLoginController(This) This.nIdUtil = Null This.nNivelAcces = Null Endcase Endfunc && INIT *********************************************************************** Procedure conecteaza Local lcParolaSchema,lcServer,lcSchema,lcParola lcServer = This.oControllerSetari.getServerSetari() This.oDBController.setServer(lcServer) This.oDBController.setSchemaParola(This.oControllerSetari.getSchemaSecurity(lcServer),This.oControllerSetari.getParolaSecurity(lcServer)) lnIdFirmaSetari = This.oControllerSetari.getIdFirmaSetari() If !Empty(lnIdFirmaSetari) lcParolaSchema = This.oDBController.getParolaSchema(lnIdFirmaSetari) IF !EMPTY(lcParolaSchema) lnPoz = AT('$',lcParolaSchema) lcSchema = SUBSTR(lcParolaSchema,1,lnPoz-1) lcParola = SUBSTR(lcParolaSchema,lnPoz+1) This.oDBController.setSchemaParola(lcSchema,lcParola) If This.nTipVerificare = 0 This.oControllerSetari.verificaVersiuni() Endif ENDIF Endif Endproc *********************************************************************** PROCEDURE deconecteaza This.oDBController.deconecteaza() This.oUtilizator.reseteazaDate() ENDPROC *********************************************************************** Function getIdUtil Return This.oUtilizator.getIdUtil() Endfunc *********************************************************************** Function getUtilizator Return This.oUtilizator.getUtilizator() Endfunc *********************************************************************** Function getSex Return This.oUtilizator.getSex() Endfunc *********************************************************************** Procedure setInTura LPARAMETERS tlInTura This.oUtilizator.setInTura(tlInTura) Endproc *********************************************************************** Function getInTura Return This.oUtilizator.getInTura() Endfunc *********************************************************************** Function getNivelAcces Return This.oUtilizator.getNivelAcces() Endfunc *********************************************************************** Function getIdRestaurant Return This.oControllerSetari.getIdRestaurant() Endfunc *********************************************************************** FUNCTION setRestaurant LPARAMETERS tcRestaurant This.cRestaurant = tcRestaurant _Screen.Caption = gcExplicatieProgram + [ * ] + tcRestaurant ENDFUNC *********************************************************************** FUNCTION getRestaurant RETURN This.cRestaurant ENDFUNC *********************************************************************** Function getIdSucursala Return This.oControllerSetari.getIdSucursala() Endfunc ********************************************************************* Function getIdMama Return This.oControllerSetari.getIdMama() Endfunc ********************************************************************* Function getEMama Return This.oControllerSetari.getEMama() Endfunc ********************************************************************* FUNCTION getFirma LOCAL loFirma loFirma = This.oControllerSetari.getoFirma() RETURN NVL(loFirma.firma,[ ]) endfunc *********************************************************************** Procedure lanseazaLogin If This.conecteaza() Do Form (This.cFormLogin) With This,This.cExplicatie Name This.oView Else amessagebox("Nu s-a putut stabili conexiunea cu serverul!",16,"Eroare") Endif Endproc && List *********************************************************************** Procedure verificaUtilizator Parameters tcParola,tcUtilizator Local lcCod,lcUtilizator This.oDBController.setAfiseazaEroare(.F.) lcCod = This.oDBController.verifica_drepturi_utilizator(tcParola,; This.oControllerSetari.getIdFirmaSetari(),This.oControllerSetari.getNumeProgram(),; This.nTipVerificare,IIF(This.nTipVerificare=2,This.nNivelAcces,This.nIdUtil),tcUtilizator) If !ISNULL(lcCod) This.oUtilizator.actualizeazaDate(tcParola,lcCod,tcUtilizator) IF this.nTipVerificare = 0 This.oControllerSetari.citesteSetariSchema(This.oUtilizator.getIdUtil()) This.setRestaurant(This.oDBController.initializeaza_restaurant(This.oControllerSetari.getIdRestaurant())) ENDIF Else This.oUtilizator.reseteazaDate() Endif IF This.verificaSucces() This.oView.Release() Else If This.nTipLogin = 1 *!* lcErrorMessage = "Combinatie utilizator/parola invalida!" This.oView.txtUtilizator.SetFocus() Else *!* lcErrorMessage = "Cod invalid!" This.oView.txtParola.Value = [] This.oView.txtParola.SetFocus() Endif *!* This.oView.lblMessage.Caption = lcErrorMessage This.oView.lblMessage.Caption = This.oDBController.getEroare() Endif This.oDBController.setAfiseazaEroare(.T.) Endproc *********************************************************************** FUNCTION verificaSucces LOCAL llReturn IF This.esteAutentificat() *!* AND ((This.nTipVerificare = 0) OR ; *!* (This.nTipVerificare = 1 AND This.oUtilizator.getIdUtil() = This.nIdUtil) OR ; *!* (This.nTipVerificare = 2 AND This.oUtilizator.getNivelAcces() >= This.nNivelAcces)) llReturn = .T. ELSE llReturn = .F. ENDIF RETURN llReturn ENDFUNc *********************************************************************** Function esteAutentificat Return This.oUtilizator.esteAutentificat() Endfunc *********************************************************************** Procedure SetEventsHandlers Bindevent(This.oView.cmdLogin, "CLICK", This, This.cProcLogin ) Bindevent(This.oView.cmdCancel, "CLICK", This, This.cProcLogin ) Endproc && SetEventsHandler *********************************************************************** Procedure Login Local lnRows, lcCommand, lcErrorMessage, lcUtilizator, lcParola, loUtilizator Declare laEvents[3] lcErrorMessage = "" lnRows = Aevents(laEvents,0) If lnRows = 3 lcCommand = Upper(laEvents(1).Name) Else lcCommand = "" Endif If lcCommand = 'CMDLOGIN' lcUtilizator = Alltrim(This.oView.cboUtilizator.Value) lcParola = Alltrim(This.oView.txtParola.Value) This.verificaUtilizator(lcParola,lcUtilizator) Else This.oView.Release() Endif Endproc && Login *********************************************************************** Procedure LoginCodBare Local lnRows, lcCommand, lcErrorMessage, lcUtilizator, lcParola, loUtilizator Declare laEvents[3] lcErrorMessage = "" lnRows = Aevents(laEvents,0) If lnRows = 3 lcCommand = Upper(laEvents(1).Name) Else lcCommand = "" Endif If Inlist(lcCommand, 'CMDLOGIN') lcCodBare = Alltrim(This.oView.txtParola.Value) *!* lcUtilizator = Left(lcCodBare,At("$", lcCodBare)-1) *!* lcParola = Substr(lcCodBare,At("$", lcCodBare)+1) lcParola = lcCodBare This.verificaUtilizator(lcParola) Else This.oView.Release() Endif Endproc && LoginCodBare *********************************************************************** PROCEDURE reinitializeazaDate This.oControllerSetari.citesteSetariSchema(This.oUtilizator.getIdUtil()) ENDPROC *********************************************************************** PROCEDURE release This.oUtilizator.Release() ENDPROC *********************************************************************** Enddefine