A few requests

Quick Preferences settings – It would be nice if Designer would remember my Quick Preference settings or if I could change the default settings. I use Anchored Layout and sometimes forget to change the layout when I first run Designer.

Binding – Would it be possible to add the ability to call a Jython script from a binding property?

Client Updates – It would be nice if I could ‘publish’ updates to the Clients. This would allow me to make changes to the application and allow the Clients to receive the changes after I had completed all the changes.

lookup function – It would be nice to be able to use strings for the LookupColumn and ResultColumn values. This would prevent problems in the event the dataset was changed in any way.

Documentation – Lookup function should state that the return value data type is based on the NoMatchValue data type.

Documentation – Under Data Types the Double data type is defined as ‘A Short is a 64 bit floating-point number.’

Gateway Authentication Profile – The Hash Function doesn’t save when first Updated, you have to go back and Update a second time to get the Hash Function to save.

This is in the works (definately for 3.0, maybe for the 2.2.?)

This is already implemented for 3.0 (there is a runScript() expression function in 3.0)

I'm not sure I understand - you do 'publish' updates to the clients - every time you save! You want to block these automatic updates until you are done a series of updates? If this is the case, it is something we can take under consideration. Maybe you work on a copy of the project, and latch your changes into the main project when you're done? (You can't currently do this, I'm just proposing a possible implementation of the feature)

This is in for 2.2

Agreed

We'll fix that.

We'll fix that too.

Thanks for the feedback!

I like the idea of having a separate “save” versus “save and publish” in the designer. It could introduce a potential hazard if you’re not careful.

Forgot one -

Binding – DB Browse. It would be nice if the auto generated Update statement placed single quotes around {this} when trying to bind to a VARCHAR column. Currently you can’t use the DB Browse to update a VARCHAR column, you need to use the SQL Query instead.

That bug has already been fixed for 2.2 also.

Pat -
I’m not sure I totally understood your last issue from the first post. You mean when you’re creating a DB-based authentication profile, it doesn’t “save” the hash function when you’re first creating the profile? I think you’re using “auto-create” mode, which does ignore all other fields in that screen (like it says…). I tried it on Manual creation, and the hash function “stuck”

Let me know if I’m off-base here…

Carl –
You are right on track. Auto-create does ignore all the other fields which explains why I had to go back and enter the hash function after the profile was created.

I am currently creating a PASSWORD reset dialog box, where a user can put in his username and answer a security question to RESET his password to a DEFAULT password. Then, once logged in, he can change it to what he wants. I have this working WITHOUT the security question at the moment. My problem now is that when the security question was created, I used a hash function to encrypt the security ANSWER. Is there anyway to do a CHECK that will allow me to compare the USERS input against ENCRYPTED data???

Sure, hash their answer with the same hash function (like MD5 or SHA-1) and compare the hashed user input with the stored hash of the correct answer.

That’s what I was thinking too. Alas, my ABILITY to code is not yet up to par for this course :wink:

How would I go about doing that on a text box. Some sample code would be greatly appreciated. :smiley:

Well, I don’t have much info to code from, but assuming you’re using MySQL’s MD5 function and taking liberties with what might be the format in which you’ve stored the security question answers:

userAnswer = event.source.parent.getComponent("AnswerTextBox") userName = fpmi.security.getUsername() affected = fpmi.db.runPrepStmt("UPDATE StoredAnswers SET Username=Username WHERE Username=? AND MD5(?)=CorrectAnswerHash", [userName, userAnswer]) if affected==0: fpmi.gui.warningBox("Incorrect answer") else: fpmi.gui.messageBox("You got it!")

This logic uses a bit of a trick. It issues an UPDATE query that does nothing (setting username=username), and checks how many rows it modified. If it is zero, the answer didn’t match, otherwise it did.