wwProcess::OnShowAuthenticationForm
about 2 minutes to read

Event that is fired when an authentication form should be displayed to prompt for login information. Hook this method to override the behavior of the user interface.

The form displayed should have the following form fields:

  • WebLogin_txtUsername
  • WebLogin_txtPassword
  • WebLogin_chkRememberMe (not used currrently)

Form variables are forwarded to Authenticate() which verifies these form vars.

o.OnShowAuthenticationForm(lcUserName, lcErrorMsg)

Parameters

lcUserName

lcErrorMsg

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: 09/09/15
Comment or report problem with topic