wwProcess::OnAuthenticated
about 2 minutes to read

Event called after a user has been authenticated. Use this method to retrieve values from Session() and store to process properties.

The following example demonstrates in a Process class:

foxpro
FUNCTION OnAuthenticated() *** Read custom Process Properties this.cAuthenticatedUserName = Session.GetSessionVar("AuthenticatedUsername") this.nAuthenticatedUserPk = VAL(Session.GetSessionVar("AuthenticatedUserPk")) *** You could also load up the user object so it's always available *this.oUserSecurity.Load(this.nAuthenticatedUserPk) *this.oAuthenticatedUser = this.oUserSecurity.oUser ENDFUNC

Typically you'll use this method in combination with wwProcess::OnAuthenticateUser() to implement custom authentication.

o.OnAuthenticated()

Example

The following demonstrates the full process of authentication

foxpro
********************************************************************* * Function ttprocess :: OnProcessInit ************************************ FUNCTION OnProcessInit LOCAL lcScriptName, llForceLogin THIS.InitSession("ttw") lcScriptName = LOWER(JUSTFNAME(Request.GetPhysicalPath())) llIgnoreLoginRequest = INLIST(lcScriptName,"default","login") IF !THIS.Authenticate("any","",llIgnoreLoginRequest) IF !llIgnoreLoginRequest RETURN .F. ENDIF ENDIF Response.Encoding = "UTF8" Request.lUtf8Encoding = .T. RETURN .T. ENDFUNC ************************************************************************ * Login **************************************** *** Function: Handles display of the login form if directly accessed *** and routes postbacks to the Authenticate() method. *** Assume: *** Pass: *** Return: ************************************************************************ FUNCTION Login() pcErrorMessage = "" IF Request.IsPostback() pcUsername = Request.Form("WebLogin_txtUsername") IF this.Authenticate("ANY",@pcErrorMessage) Response.Redirect("~/default.ttk") ENDIF ENDIF Response.ExpandScript(Config.cHtmlPagePath + "views\common\login.wcs") ENDFUNC * Login ************************************************************************ * Logout **************************************** *** Function: Just a routing mechanism to allow logging out. *** Assume: *** Pass: *** Return: ************************************************************************ FUNCTION Logout() this.Authenticate("Logout") Response.Redirect("default.ttk") ENDFUNC * Logout ************************************************************************ * OnShowAuthenticationForm **************************************** *** Function: Show the authentication form. In this case it's simply *** showing the application template. *** Assume: *** Pass: *** Return: ************************************************************************ FUNCTION OnShowAuthenticationForm(lcUsername, lcErrorMsg) pcUsername = lcUsername pcPassword = "" pcRedirectUrl = "" pcErrorMessage = lcErrorMsg IF EMPTY(pcUsername) pcUserName = "" ENDIF Response.ExpandScript(Config.cHtmlPagePath + "views\common\login.wcs") ENDFUNC * OnShowAuthenticationForm ************************************************************************ * OnAuthenticated **************************************** *** Function: Called after a user has authenticated so we can read *** values out of the session. *** Assume: *** Pass: *** Return: ************************************************************************ FUNCTION OnAuthenticated() *** Read custom Process Properties from Session which should be *** there since they were created when user originally signed in this.cAuthenticatedUserName = Session.GetSessionVar("AuthenticatedUserName") this.nAuthenticatedUserPk = VAL(Session.GetSessionVar("AuthenticatedUserPk")) RETURN .T. ENDFUNC * OnAuthenticated ************************************************************************ * OnAuthenticateUser **************************************** *** Function: Handles validating username and password for the user *** Assume: *** Pass: *** Return: ************************************************************************ FUNCTION OnAuthenticateUser(lcUsername, lcPassword, lcErrorMsg) LOCAL loUser loUser = CREATEOBJECT("ttUser") *** This is not actually derived from user security but basic structure *** is similar. Save/Load methods. THIS.oUserSecurity = loUser IF !loUser.AuthenticateAndLoad(lcUserName, lcPassword) this.cAuthenticatedUser = "" this.cAuthenticatedUserName = "" this.nAuthenticatedUserPk = -1 lcErrorMsg = this.oUserSecurity.cErrorMsg RETURN .F. ENDIF *** Assign our own variables we use in the application this.cAuthenticatedUserName = loUser.oData.UserName this.nAuthenticatedUserPk = loUser.oData.Pk *** Assign Session vars so we can read them back in OnAuthenticated() Session.SetSessionVar("AuthenticatedUserName",this.cAuthenticatedUserName) Session.SetSessionVar("AuthenticatedUserPk", this.nAuthenticatedUserPk) RETURN .T. ENDFUNC * OnAuthenticateUser

See also:

Class wwProcess | Custom Authentication with UserSecurity (Example) | UserSecurity Authentication

© West Wind Technologies, 1996-2024 • Updated: 01/01/16
Comment or report problem with topic