Please help with API way of checking UserID and Password

Barry G. Sumpter barrysum at bigpond.net.au
Mon Mar 26 18:10:12 CDT 2012


LOL.
Every time I post I find a solution in 5 mins afterwards.

The very next example in the Field Find allow us to nominate a dataset
(set1) to perform the Find Field on.

   put VField_FindValue( fld_string, "aa", set1 ) into res

Apologies, for the distraction. 



-----Original Message-----
From: Barry G. Sumpter [mailto:barrysum at bigpond.net.au] 
Sent: Tuesday, 27 March 2012 9:33 AM
To: 'valentina at lists.macserve.net'
Subject: Please help with API way of checking UserID and Password

Hi all,

I'm not sure if this is the correct way to verify UserID and Passoword using
API.
This is the only example I could find with two fields.
I'm used to the SQL way so the API way is a little strange to me.

>From v4Rev example Field_Find.rev
We do a Find Field based on a user name
Then do a find field based on a password Then do a vset_intersect between
the two results- that I can't get to work

Is there a better way?

Why is my vset_intersect returning the - fatal signal 11 error which is
usually a wrong object being used.


I'm removed a lot of debugging messages.
This is the real meat of the script.
I've had a really good look at vWiki but nothing looks close to the LiveCode
script found in the v4Rev samples.

Any help would be greatly appreciated.

tia

----
on ValidateUsernameAndPassword
   
   
   initValentinaDB_AsLocalOrRemoteServer
-- setup Database Object
   initValentinaDB_OpenConnectionLocalOrRemoteServer           -- setup DB
Connection Object
   initValentinaDB_OpenOrCreate
-- setup Table and Fields Object
 
   --   Put "--Starting - SelectAll" & cr
   --   put VTable_SelectAllRecords( mGeoUser ) into allRecs   -- this works
returns all 10 recs
   --   get showError()
   --   ShowSet mGeoUser, allRecs 
   
       put VField_FindValue( mUsername, gMyUsername ) into set1   --create a
dataset of records that have this username    -- Works - returns 1 rec
   -- put VField_FindRange( mUsername,  true, gMyUsername, gMyUsername, true
) into set1   -- Works   -- returns 1 rec
      
   put VSet_Count(set1) into recount    -- must do this here else: Fatal
signal 11(usually wrong object) Don't know why
   
   ShowSet mGeoUser, set1
   
   if recCount < 1 then
      put recCount & " ***** Valid Username not found: "  & gMyUsername & "
- " & mUserName
   end if
      
   put "mPassword: " & mPassword & " - gMyPassword: " & gMyPassword & cr
   
   put VField_FindValue( mPassword, gMyPassword ) into set2    --create a
dataset of records that have this password   --  works returns 1 rec
   -- put VField_FindRange( mPassword,  true, gMyPassword, gMyPassword, true
) into set2  -- works returns 1 rec

   put VSet_Count(set2) into recount  -- must do this here else: Fatal
signal 11(usually wrong object) Don't know why
   
   ShowSet mGeoUser, set2
      
   if recCount < 1 then
      put recCount & " ***** Valid Password not found: "  & gMyPassword & "
- " & mPassword
   end if
   
   
   -- Now combine the two RecID Datasets - should only have 1 record - if
two then there a duplicate UID/PW combo recs
   


put VSet_Intersection( set1, set2) into set3   -- I get a fatal signal 11
here - (usually using the wrong object)    ************
   


   put VSet_Count(set3) into recount    -- must do this here else: Fatal
signal 11(usually wrong object) Don't know why
   
   ShowSet mGeoUser, set3
   
   
   if recCount < 1 then
      put recCount & " ***** Valid Username and Password combination not
found: "  & gMyPassword & " - " & mPassword
   end if
   
   
   --Always get error on these destructors: livecode-server exited due to
fatal signal 11
   -- put VSet_Destructor(set1) into set1
   -- put VSet_Destructor(set2) into set2
   
end ValidateUsernameAndPassword



More information about the Valentina mailing list