Verify Email for Question Login

Hello all,

I am trying to verify another data value, such as a users email (just an example) during the forgotten password process. I can add the field to the Question Login Form, but I do not see how to carry it over to the Question Login workflow. The Question Login workflow seems to take in information after an valid or not valid login decision has been made. Where is this decision made? I need to modify this decision making process to include my own variables...

[483 byte] By [JimBeard] at [2007-11-26 10:52:27]
# 1
I am still searching for this and am wondering if anyone knows the answer...
JimBeard at 2007-7-7 3:05:20 > top of Java-index,Web & Directory Servers,Directory Servers...
# 2

OK, so my current working plan is to add the email question as a system defined question. Then, customize the Question Login form to show always show that one, and then to randomly show the others.

I wrote some rules for generating random indexes in the range that I specify. Now I am trying to display the questions based on supplying an index.I wrote a rule to supply the question names, then replaced the loop source list in Question Login form to use the rule that gets the names.

The rule looks like this:

<Rule name='getQuestionNames'>

<Description>Return a list of names of authentication questions to show.</Description>

<block>

<defvar name='nameList'>

<ref>waveset.questions[*].name</ref>

</defvar>

<defvar name='outNameList'/>

<append name='outNameList'>

<get>

<ref>nameList</ref>

<i>0</i>

</get>

</append>

<defvar name='startOfIndexing'>

<i>1</i>

</defvar>

<defvar name='endOfIndexing'>

<i>6</i>

</defvar>

<defvar name='randomIndexes'>

<rule name='getRandomIndexes'>

<argument name='startOfRange' value='$(startOfIndexing)'/>

<argument name='endOfRange' value='$(endOfIndexing)'/>

<argument name='numberOfIndexes'>

<i>2</i>

</argument>

</rule>

</defvar>

<append name='outNameList'>

<get>

<ref>nameList</ref>

<get>

<ref>randomIndexes</ref>

<i>0</i>

</get>

</get>

</append>

<append name='outNameList'>

<get>

<ref>nameList</ref>

<get>

<ref>randomIndexes</ref>

<i>1</i>

</get>

</get>

</append>

<ref>outNameList</ref>

</block>

</Rule>

However, when I view the Question Login Form, I get the following error:

View access denied to Subject Reset on Configuration: UO Question Login Library.

Does this make sense to anyone? I'm not sure what I'm doing wrong here.... There was 1 similar post about a problem that contained the same error message. Someone said it was a bug. We are using IDM 6.0 with no service packs. I'm not sure if this is a bug or not, but I am wondering if it has to do with accessing the questions while being annoymous... How does the system know how you are yet to fetch the right questions?

JimBeard at 2007-7-7 3:05:20 > top of Java-index,Web & Directory Servers,Directory Servers...
# 3
plz post the code for the rule getRandomIndexesThanks,Potash
potash at 2007-7-7 3:05:20 > top of Java-index,Web & Directory Servers,Directory Servers...
# 4

As requested:

getRandomIndexes:

<Rule name='getRandomIndexes'>

<Description>Return a list of random indexes in the range provided.</Description>

<RuleArgument name='startOfRange'>

<Comments>The begining of the range for the indexes.</Comments>

</RuleArgument>

<RuleArgument name='endOfRange'>

<Comments>The end of the range for the indexes.</Comments>

</RuleArgument>

<RuleArgument name='numberOfIndexes'>

<Comments>The number of random indexes to return.</Comments>

</RuleArgument>

<block>

<defvar name='randomInt'>

<rule name='getRandomIndex'>

<argument name='startOfRange' value='$(startOfRange)'/>

<argument name='endOfRange' value='$(endOfRange)'/>

</rule>

</defvar>

<defvar name='indexList'>

<list/>

</defvar>

<defvar name='forLoopIndex'>

<i>0</i>

</defvar>

<while>

<gt>

<ref>numberOfIndexes</ref>

<ref>forLoopIndex</ref>

</gt>

<while>

<contains>

<ref>indexList</ref>

<ref>randomInt</ref>

</contains>

<set name='randomInt'>

<rule name='getRandomIndex'>

<argument name='startOfRange' value='$(startOfRange)'/>

<argument name='endOfRange' value='$(endOfRange)'/>

</rule>

</set>

</while>

<append name='indexList'>

<ref>randomInt</ref>

</append>

<set name='forLoopIndex'>

<add>

<ref>forLoopIndex</ref>

<i>1</i>

</add>

</set>

</while>

<ref>indexList</ref>

</block>

</Rule>

And just for fun, here is getRandomIndex:

<Rule name='getRandomIndex'>

<Description>Return a random index in the range provided.</Description>

<RuleArgument name='startOfRange'>

<Comments>The begining of the index range.</Comments>

</RuleArgument>

<RuleArgument name='endOfRange'>

<Comments>The ed of the range to provide an index between.</Comments>

</RuleArgument>

<block>

<defvar name='possibleIndex'>

<mod>

<invoke name='nextInt' class='com.waveset.util.RandomGen'/>

<sub>

<ref>endOfRange</ref>

<ref>startOfRange</ref>

</sub>

</mod>

</defvar>

<set name='possibleIndex'>

<cond>

<lt>

<ref>possibleIndex</ref>

<i>0</i>

</lt>

<mult>

<i>-1</i>

<ref>possibleIndex</ref>

</mult>

<ref>possibleIndex</ref>

</cond>

</set>

<set name='possibleIndex'>

<add>

<ref>possibleIndex</ref>

<ref>startOfRange</ref>

</add>

</set>

<ref>possibleIndex</ref>

</block>

</Rule>

JimBeard at 2007-7-7 3:05:20 > top of Java-index,Web & Directory Servers,Directory Servers...
# 5
Thanks for taking a look at it btw!
JimBeard at 2007-7-7 3:05:20 > top of Java-index,Web & Directory Servers,Directory Servers...
# 6
Thanks for sharing code-potash
potash at 2007-7-7 3:05:20 > top of Java-index,Web & Directory Servers,Directory Servers...
# 7
It has been suggested that I need to allow the Library to run under a 'endUserAccess' attribute in the Configuration:System Configuration object, but I have still had no luck. Is this ringing any bells for anyone? Has anyone had to do this before?
JimBeard at 2007-7-7 3:05:20 > top of Java-index,Web & Directory Servers,Directory Servers...
# 8
If you are using BPE, in the Repository tab of your rule library, set the authorization type to EndUserRule.If editing the XML, set as below<Configuration authType='EndUserRule' name='My Rule Library' ...>
chits98 at 2007-7-7 3:05:20 > top of Java-index,Web & Directory Servers,Directory Servers...
# 9

Thanks for the tip chits. I had not set the authType yet in the rule library. I did set it, and it still doesn't seem to be working though. I'm continueing to get the "View access denied to Subject Reset on Configuration: UO Question Login Library." error.

I wish some of this was a little more intuitive or documented....

So far I've set the authType on the rule library, on each rule in the library, and I've added an entry under the Configuration:End User Tasks object and added a endUserAccess attribute to the Configuration:System Configuration object. The endUserAccess attribute looks like this:

<Attribute name='endUserAccess'>

<Object>

<Attribute name='UserForm'>

<List>

<Object name='UO Question Login Library'/>

</List>

</Attribute>

</Object>

</Attribute>

The End User Tasks entry looks like:

<Attribute name='endUserAccess'>

<Object>

<Attribute name='UserForm'>

<List>

<Object name='UO Question Login Library'/>

</List>

</Attribute>

</Object>

</Attribute>

The End Users Tasks object looks like:

<Configuration id='#ID#Configuration:EndUserTasks' name='End User Tasks' lock='jimbeard#116129565

6211' creator='%STARTUP%Configurator' createDate='1156367507763' lastModifier='jimbeard' lastModD

ate='1161295356153' lastMod='30826'>

<Extension>

<List>

<List>

<String>UO Question Login Library</String>

<String>UO Question Login Library</String>

</List>

</List>

</Extension>

<MemberObjectGroups>

<ObjectRef type='ObjectGroup' id='#ID#Top' name='Top'/>

</MemberObjectGroups>

<Properties>

<Property name='editorOriginalName' value='End User Tasks'/>

</Properties>

</Configuration>

JimBeard at 2007-7-7 3:05:20 > top of Java-index,Web & Directory Servers,Directory Servers...
# 10

Try adding the following to all of your rules:

<!-- Body of rule above here -->

<MemberObjectGroups>

<ObjectRef type='ObjectGroup' id='#ID#All' name='All'/>

</MemberObjectGroups>

</Rule>

Jason

jsallee at 2007-7-7 3:05:20 > top of Java-index,Web & Directory Servers,Directory Servers...
# 11

I actually figured out the issue. With help from the forum and Dana from Aegis I eventually got it working.. sort of.. Really it just exposed my next problem and I've moved on to my next issue!

What I found was that I needed to specify the rule library as a 'Configuration' attribute and not a 'UserForm' attribute in the Configuration:System Configuration object.

My next issue is that in my rule, I don't think that waveset.questions[*].name is returning anything. I probably need to debug it or capture the context and examine it to see definitively what is going on.

JimBeard at 2007-7-7 3:05:20 > top of Java-index,Web & Directory Servers,Directory Servers...
# 12

Thanks for the plug Jim. :) Im glad you got it working.

To find the answers....either 1) dump the context after you have the user view. OR 2) Do a getView from within the BPE for that user. View type is User. Note that you can not set the answers on a create. Its a bug. You can, however, check out the 'questionanswers" view (or something like that) to set them. That may be the view you wish to use anyway.

Regards

Dana Reed

AegisUSA

Denver, Co

danareed at 2007-7-7 3:05:20 > top of Java-index,Web & Directory Servers,Directory Servers...