I have some workflow that uses this Run Process when a (knowledgeable) user
wanders from the forms they should be accessing.  I originally built in it
on 7.6.04 but has since been upgraded to 8.1.  Works very well.

Jason


On Mon, Feb 3, 2014 at 12:48 PM, L G Robinson <[email protected]> wrote:

> **
> Hi Doug,
>
> Thanks for this post... I have been looking for this "secret" for some
> time. As I was implementing my solution, I ran across this Process:
>
>      Application-Invalidate-User
>
> Is there any reason to use the explicit direct SQL instead of calling the
> above Process? Perhaps this process was a recent addition? I am running ARS
> 7.6.04 and it appears to do exactly the same thing as the suggested SQL, at
> least as far as I can tell from my logs.
>
> Thanks.
> Larry
>
> On Fri, Jan 31, 2014 at 3:59 PM, Mueller, Doug <[email protected]>wrote:
>
>> **
>>
>> Everyone,
>>
>>
>>
>> As an adjunct to this conversation, there has come up again a topic that
>> is asked about periodically -
>>
>>
>>
>> What does the Disable mean on the User form for a user.
>>
>>
>>
>> Well, out of the box, it doesn't mean anything.  We always are
>> considering what it should mean, but a bit
>>
>> part of the discussion is what does it mean in conjunction with AREA and
>> external authentication.  If a user
>>
>> is disabled, should they fail in an AREA authentication?  Or do they
>> succeed.  If they succeed, do we still add
>>
>> on permissions from the user record (cross-reference-blank-password) or
>> do we authenticate them but
>>
>> not authorize them (confusing).  Or, do we just let them succeed and
>> attach permissions or whatever that
>>
>> is cross-referenced but if you chain AREA and ARS, we would be OK with
>> AREA but not if that didn't pass
>>
>> and we moved to (chained to) ARS for authentication.
>>
>>
>>
>> Anyway, for those who want to make the disable operation be meaningful,
>> there is a simple workflow
>>
>> technique you can use.  To offer a complete solution, we are talking
>> about 3 or 4 filters.
>>
>>
>>
>> This would be for handling ARS validation - essentially using the 3rdoption 
>> above for AREA, if the user
>>
>> validates with AREA, it is OK and any information on the AR System user
>> record that is cross referenced is
>>
>> used - but we would not pass any authentication that is chained to ARS.
>>
>>
>>
>>
>>
>> OK, the filters:
>>
>>
>>
>> Disable an existing user
>>
>>
>>
>> Filter that fires on Modify with a run if of TR.Status = "Disabled".
>>
>> Action is to perform a Direct SQL command to update the password in the
>> user_cache table to INVALID
>>
>>
>>
>> Update user_cache SET (password = 'INVALID') WHERE entryId = '$1$'
>>
>>
>>
>> entry ID is the key we link by although you could also user  username =
>> '$101$' as well to set for matching
>>
>> user name.  Either would work.
>>
>>
>>
>> Yes, the word INVALID.  This is the same value we put in the password
>> field of the user_cache record when
>>
>> a user is blocked for too many bad password attempts.   This user can
>> NEVER login unless his password is
>>
>> reset by someone else as they cannot login to change it.
>>
>>
>>
>> (depending on your DB as some DBs want parenthesis around the set clause
>> and others do not if there is
>>
>> only one item in the clause)
>>
>>
>>
>>
>>
>> Prevent work on a disabled user
>>
>>
>>
>> Filter that if Status = "Disabled" and Password != $NULL$  will return an
>> error that you cannot change the
>>
>> password of a disabled user.
>>
>>
>>
>> Or you could block all change to a disabled user or do whatever you want
>> here to prevent a password change
>>
>> for a disabled user which would then reset the password and reactivate
>> them.
>>
>>
>>
>>
>>
>> Reactivate a disabled user
>>
>>
>>
>> Filter that if TR.Status = "Enabled" and DB.Status = "Disabled" will run
>> check that there is a password
>>
>> specified (must change password on enable) and that if you are using the
>> user password feature you set the
>>
>> option to require the user to change password on first login for this
>> user so that they have to change after
>>
>> login as their password is known by someone else.
>>
>>
>>
>>
>>
>> Create a disabled user
>>
>>
>>
>> Now if you want to create a disabled user, there is a bit more effort.
>> The problem is that the user_cache
>>
>> entry doesn't exist for you to modify as the User record is being created.
>>
>>
>>
>> You could just disallow Status = Disabled on Create/Merge.  Argument is
>> why are you creating disabled users?
>>
>>
>>
>> Of if you want to, you need to do something to disable the user right
>> after create (phase 3 run process that
>>
>> comes back and updates the user_cache entry after it is there  or
>> something similar).
>>
>>
>>
>>
>>
>> Whether we add this or not is under discussion, but it is clearly
>> something you can do on your own system
>>
>> if desired.  I just wanted to get a solution out there for folks who
>> wanted to do something in this area.
>>
>>
>>
>> I hope this is useful,
>>
>>
>>
>> Doug Mueller
>> _ARSlist: "Where the Answers Are" and have been for 20 years_
>
>
> _ARSlist: "Where the Answers Are" and have been for 20 years_
>

_______________________________________________________________________________
UNSUBSCRIBE or access ARSlist Archives at www.arslist.org
"Where the Answers Are, and have been for 20 years"

Reply via email to