| 123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333334335336337338339340341342343344345346347348 |
-
- /*------------------------------------------------------------------------
- File : adresse_dict
- Purpose :
- Syntax :
- Description :
- Author(s) : walter.riechsteiner
- Created : Thu Jun 26 13:56:20 CEST 2025
- Notes :
- ----------------------------------------------------------------------*/
-
- BLOCK-LEVEL ON ERROR UNDO, THROW.
- USING OpenEdge.Core.String FROM PROPATH.
- USING OpenEdge.Net.HTTP.IHttpResponse FROM PROPATH.
- USING OpenEdge.Net.HTTP.StatusCodeEnum FROM PROPATH.
- USING OpenEdge.Web.IWebRequest FROM PROPATH.
- USING OpenEdge.Web.WebHandler FROM PROPATH.
- USING OpenEdge.Web.WebResponseWriter FROM PROPATH.
- USING Progress.Json.ObjectModel.JsonObject FROM PROPATH.
- USING Progress.Json.ObjectModel.JsonArray FROM PROPATH.
- USING Progress.Json.ObjectModel.ObjectModelParser FROM PROPATH.
- USING src.ch.adprime.gemis.WebHandlerUtilities FROM PROPATH.
- USING utilities.utilitiesHandler FROM PROPATH.
- USING OpenEdge.Net.HTTP.HttpHeader FROM PROPATH.
- CLASS auth.loginImpl INHERITS WebHandler:
- DEFINE VARIABLE outilitiesHandler AS utilitiesHandler NO-UNDO.
- DEFINE TEMP-TABLE tcompanies
- SERIALIZE-NAME 'companies'
- FIELD company AS CHARACTER SERIALIZE-NAME 'company'
- FIELD company_Name AS CHARACTER SERIALIZE-NAME 'company_name'
- FIELD lselected AS LOGICAL SERIALIZE-NAME 'selected'
- .
-
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD OVERRIDE PROTECTED INTEGER HandleGet (INPUT poRequest AS IWebRequest ):
- DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
- DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
- DEFINE VARIABLE oBody AS String NO-UNDO.
- DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsoncompanies AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonArray AS JsonArray NO-UNDO.
- DEFINE VARIABLE cDefautlCharSet AS CHARACTER NO-UNDO INIT 'UTF-8'.
- DEFINE VARIABLE oParser AS ObjectModelParser NO-UNDO.
- DEFINE VARIABLE cCorralationID AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cContent-Type AS CHARACTER NO-UNDO.
- DEFINE VARIABLE htcompanies AS HANDLE NO-UNDO.
- DEFINE VARIABLE lcJsonInhalt AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE lOk AS LOGICAL NO-UNDO.
- DEFINE VARIABLE ii AS INTEGER NO-UNDO.
-
- DEFINE VARIABLE cuser_name AS CHARACTER NO-UNDO.
-
- MESSAGE 'start get'.
- cuser_name = poRequest:URI:GetQueryValue("user_name").
-
- ii = 0.
- EMPTY TEMP-TABLE tcompanies.
- FOR EACH companies NO-LOCK
- WHERE companies.active = TRUE:
-
- ii = ii + 1.
- CREATE tcompanies.
- ASSIGN
- tcompanies.company = companies.company
- tcompanies.company_Name = companies.company_name
- tcompanies.lselected = (IF ii = 1 THEN TRUE ELSE FALSE).
- END.
-
- outilitiesHandler = NEW utilitiesHandler().
- // Ist dem Benutzer ein company zugeteilt ?
- FIND FIRST users NO-LOCK
- WHERE users.user_name = cuser_name NO-ERROR.
- IF AVAILABLE users THEN
- DO:
- FOR EACH tcompanies:
- tcompanies.lselected = (IF tcompanies.company = users.company THEN TRUE ELSE FALSE).
- END.
- END.
-
- htcompanies = TEMP-TABLE tcompanies:DEFAULT-BUFFER-HANDLE.
- cContent-Type = "application/json".
- cDefautlCharSet = 'utf-8'.
- oJsonResponse = NEW JsonObject().
- oParser = NEW ObjectModelParser().
-
- oJsonResponse:ADD('user_name', cuser_name).
- oJsoncompanies = NEW JsonObject().
- htcompanies:WRITE-JSON('JsonObject', oJsoncompanies).
- lcJsonInhalt = oJsoncompanies:GetJsonText('companies').
- oJsonArray = CAST(oParser:Parse(lcJsonInhalt), JsonArray) NO-ERROR.
- oJsonResponse:ADD('companies', oJsonArray) NO-ERROR.
- oJsonResponse:WRITE(lcJsonInhalt, TRUE).
- MESSAGE STRING(lcJsonInhalt).
-
- oBody = NEW STRING(oJsonResponse:GetJsonText()).
- WebHandlerUtilities:createHttpResponse(INPUT INTEGER(StatusCodeEnum:OK), INPUT oBody, INPUT cContent-Type, INPUT cDefautlCharSet, INPUT cCorralationID, OUTPUT oResponse).
- // oResponse:SetHeader(HttpHeaderBuilder:Build(cHeaderCorralationID):Value(cCorralationID):Header).
-
- oWriter = NEW WebResponseWriter(oResponse).
- oWriter:Open().
- oWriter:Close().
- RETURN 0.
-
- CATCH e AS Progress.Lang.Error:
- END CATCH.
- FINALLY:
- END FINALLY.
- END METHOD.
- METHOD OVERRIDE PROTECTED INTEGER HandleNotAllowedMethod(INPUT poRequest AS IWebRequest):
- DEFINE VARIABLE result AS INTEGER NO-UNDO.
- MESSAGE "HandleNotAllowedMethod called" VIEW-AS ALERT-BOX.
- RETURN result.
- END METHOD.
- METHOD OVERRIDE PROTECTED INTEGER HandleNotImplemented(INPUT poRequest AS IWebRequest):
- DEFINE VARIABLE result AS INTEGER NO-UNDO.
- MESSAGE "HandleNotImplemented called" VIEW-AS ALERT-BOX.
- RETURN result.
- END METHOD.
- /*------------------------------------------------------------------------------
- Purpose:
- Notes:
- ------------------------------------------------------------------------------*/
- METHOD OVERRIDE PROTECTED INTEGER HandlePost(INPUT poRequest AS IWebRequest):
-
- DEFINE VARIABLE oResponse AS IHttpResponse NO-UNDO.
- DEFINE VARIABLE oWriter AS WebResponseWriter NO-UNDO.
- DEFINE VARIABLE oParser AS ObjectModelParser NO-UNDO.
- DEFINE VARIABLE oJsonResponse AS JsonObject NO-UNDO.
- DEFINE VARIABLE oMessage AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonData AS JsonObject NO-UNDO.
- DEFINE VARIABLE oJsonButtons AS JsonObject NO-UNDO.
- DEFINE VARIABLE lRetVal AS LOGICAL NO-UNDO.
- DEFINE VARIABLE lcJsonString AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE i1 AS INTEGER NO-UNDO.
- DEFINE VARIABLE cPasswort AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cpassword AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ccompany AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cuser_name AS CHARACTER NO-UNDO.
- DEFINE VARIABLE ilanguage_id AS INTEGER NO-UNDO.
- DEFINE VARIABLE lcMessage AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE lcErrorMessage AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE lError AS LOGICAL NO-UNDO.
- DEFINE VARIABLE cString AS CHARACTER NO-UNDO.
- DEFINE VARIABLE cMessage AS CHARACTER NO-UNDO.
- DEFINE VARIABLE csession_token AS CHARACTER NO-UNDO.
- DEFINE VARIABLE rUsers AS RECID NO-UNDO.
- DEFINE VARIABLE poHeaders AS HttpHeader NO-UNDO EXTENT.
- DEFINE VARIABLE ix AS INTEGER NO-UNDO.
- DEFINE VARIABLE lcRetVal AS LONGCHAR NO-UNDO.
- DEFINE VARIABLE oHeader AS OpenEdge.Net.HTTP.HttpHeader NO-UNDO.
- MESSAGE 'start post'.
- lRetVal = WebHandlerUtilities:getJsonFromRequest(INPUT poRequest, OUTPUT oJsonData) NO-ERROR.
- MESSAGE 'getJsonFromRequest = ' lRetVal.
- oJsonData:WRITE(lcJsonString, FALSE).
- MESSAGE 'ganzer Eingangsstring = ' STRING(lcJsonString).
- ccompany = oJsonData:GetCharacter('company' ).
- cuser_name = oJsonData:GetCharacter('user_name' ).
- cpassword = oJsonData:GetCharacter('password').
- MESSAGE ccompany '-' cuser_name '-' cpassword.
- lcErrorMessage = ''.
- lError = FALSE.
- outilitiesHandler = NEW utilitiesHandler().
-
- DO WHILE TRUE:
- FIND FIRST users NO-LOCK
- WHERE users.user_name = cuser_name
- AND users.active = TRUE NO-ERROR.
- IF NOT AVAILABLE users THEN
- DO:
- lError = TRUE.
- outilitiesHandler:getErrorMessage (
- INPUT '1990',
- INPUT 1 , /* Sprcd*/
- INPUT '' , /* Parameter */
- OUTPUT lcMessage
- ).
- LEAVE.
- END.
-
- ilanguage_id = users.language_id.
- rUsers = RECID(users).
-
- IF users.password <> cpassword THEN
- DO:
- lError = TRUE.
- outilitiesHandler:getErrorMessage (
- INPUT '1992' ,
- INPUT ilanguage_id, /* Sprcd*/
- INPUT '' , /* Parameter */
- OUTPUT lcMessage
- ).
- LEAVE.
- END.
-
- FIND FIRST userauthorization NO-LOCK
- WHERE userauthorization.company = ccompany
- AND userauthorization.user_name = cuser_name NO-ERROR.
- IF NOT AVAILABLE userauthorization THEN
- DO:
- lError = TRUE.
- outilitiesHandler:getErrorMessage (
- INPUT '1991' ,
- INPUT ilanguage_id, /* Sprcd*/
- INPUT '' , /* Parameter */
- OUTPUT lcMessage
- ).
- LEAVE.
- END.
- REPEAT TRANSACTION ON ERROR UNDO, LEAVE:
- csession_token = users.sha_password.
-
- IF users.sha_password <> '' THEN LEAVE.
- IF users.password = '' THEN cPasswort = users.user_name.
- ELSE cPasswort = users.password.
- outilitiesHandler:generateHash (
- INPUT 'SHA-512',
- INPUT SUBSTITUTE('&1:&2', cPasswort, STRING(TIME,'99999999')),
- INPUT 'Passw0rd',
- OUTPUT lError,
- OUTPUT cMessage,
- OUTPUT csession_token
- ).
- FIND users EXCLUSIVE-LOCK WHERE RECID(users) = rUsers.
- ASSIGN
- users.sha_password = csession_token.
- RELEASE users.
- LEAVE.
- END.
-
- FIND users NO-LOCK WHERE RECID(users) = rUsers.
-
- /* FIND FIRST userdata */
- /* WHERE userdata.user_name = cuser_name */
- /* AND userdata.company = ccompany */
- /* AND userdata.record_type = 'LOGIN' */
- /* AND userdata.section = 'company' NO-ERROR.*/
- /* IF NOT AVAILABLE userdata THEN */
- /* DO: */
- /* CREATE userdata. */
- /* ASSIGN */
- /* userdata.user_name = cuser_name */
- /* userdata.company = ccompany */
- /* userdata.record_type = 'LOGIN' */
- /* userdata.section = 'company'. */
- /* END. */
- /* ASSIGN */
- /* userdata.cfield_1 = ccompany */
- /* userdata.cfield_2 = cuser_name */
- /* userdata.cfield_3 = csession_token. */
- /* */
- /* RELEASE userdata. */
-
- oResponse = NEW OpenEdge.Web.WebResponse().
- oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
- oResponse:ContentType = "application/json;charset=utf-8".
- oWriter = NEW WebResponseWriter(oResponse).
- FIND FIRST users NO-LOCK
- WHERE users.user_name = cuser_name NO-ERROR.
-
- oJsonResponse = NEW JsonObject().
- oJsonResponse:ADD('success' , TRUE ).
- oJsonResponse:ADD('session_token', csession_token ).
- oJsonResponse:ADD('company' , ccompany ).
- oJsonResponse:ADD('user_name' , cuser_name ).
- oJsonResponse:ADD('display_name' , users.display_name).
- oJsonResponse:ADD('language_id' , ilanguage_id ).
-
- oJsonButtons = NEW JsonObject().
- FOR EACH labeltext NO-LOCK
- WHERE labeltexte.company = ccompany
- AND labeltexte.program = 'buttons'
- AND labeltexte.language_id = ilanguage_id:
- oJsonButtons:ADD(labeltexte.field_name, labeltexte.sidelabel).
- END.
- oJsonResponse:ADD('labels', oJsonButtons).
-
- oJsonResponse:WRITE(lcJsonString, FALSE).
- MESSAGE 'Rückmeldung ' STRING(lcJsonString).
- oWriter:Open().
- oWriter:Write(lcJsonString).
- oWriter:Close().
-
- RETURN 0.
- END.
-
- MESSAGE 'Meldung von getErrorMessage ' STRING(lcMessage).
-
- oResponse = NEW OpenEdge.Web.WebResponse().
- oResponse:StatusCode = INTEGER(StatusCodeEnum:OK).
- oResponse:ContentType = "application/json;charset=utf-8".
- oWriter = NEW WebResponseWriter(oResponse).
-
- oJsonResponse = NEW JsonObject().
- oJsonResponse:ADD('success', FALSE).
- oJsonResponse:ADD('message', lcMessage) NO-ERROR.
-
- oJsonResponse:WRITE(lcJsonString, FALSE).
- MESSAGE 'Rückmeldung ' STRING(lcJsonString).
- oWriter:Open().
- oWriter:Write(lcJsonString).
- oWriter:Close().
-
- RETURN 0.
- CATCH e AS Progress.Lang.Error:
- END CATCH.
- FINALLY:
- DELETE OBJECT oParser NO-ERROR.
- END FINALLY.
- END METHOD.
- END CLASS.
|