You should do the same way as you do in FileMaker Pro. In each table have a field for AccountCreator. When creating a record save Get(AccountName) to that field. Have script triggers on each layout/search that adds a search into that field and user will only see there records.
There is no third party for logging in at FileMaker WebDirect. They need to go through the login part. The only other choice is to have a Guest account but then you loose all security for your solution and anyone can enter/delete information to your database.
Have a look at my DevCon session from this year and learn more
Thanks for the session link, read through and am checking out the fmp projects associated as well!
I have my project setup so that the landing page is a Dashboard and every window or layout opened from the Dashboard is a related record. Since they will already be in a related record scenario, do I need the Get(AccountName) in anything other than navigating them to their singular Dashboard on signing in? [Each table does have the User_ID that is associated. If I understand correctly, if they are already in their related records in a table, when a new record is created it will already use their User_ID. Let me know if I am wrong about that, though.
If that is the case, I think all I need is to get them to their specific User_ID-associated Dashboard. If I follow, the AccountName should be the same as their User_ID. Then I just use the Get(AccountName) on load of the project (which they have to sign in using the WebDirect login, as you mentioned) and have the onLoad (or On First Window Open) go to the related record in the Dashboard layout associated with that AccountName/User_ID.
Is that right? I have been building my project but have never used WebDirect, and I believe my next step is getting a Developer license and testing out my project and seeing where any bugs may be.
Also, do you recommend, even if I am focused on the WebDirect side, still having the WindowSize recognizer that you highlight in your session? Ie. If I understand, it is to recognize how users are logging into the WebDirect (Desktop vs tablet vs phone)?
I have a virtual table for exact same Dashboard that you have built. In that table i use FileMaker Server Scheduled Script to run once every hour to delete all records and create new records for each user. They will then have a up to date Dashboard every hour based on User ID. Get(AccountName) will work in the same way too, I just like to use IDs better then text.
In your script OnFirstWindowOpen you then set a global field User ID or UserAccountName (it have to be global field). Build relationships from your Dashboard based from that global field to your related tables and your data in either portals or charts will appear for only that user. Don't forget to Sort records if you like to show charts on your Dashboard.
You should definitely buy FileMaker Pro Advanced. It is so much easier to develop with the software, especially finding all triggers.
I would always use the WindowSize Custom Function in all my solutions to make sure I end up on the right layout in my solution.
I have FMP 15 Advanced, so I'm up to date, for sure!
In my project (which is essentially complete except for figuring out the right initial login scripting), Users will likely only be on for 5 min intervals. It is more a check in, do a task, and check out. Frequent logins, but only for short times, so will likely not need the hourly scheduled update. That said, I do not have User_ID as a global field. Is it necessary? I have the User_ID table and was thinking they login via WebDirect login, I Get (AccountName) from that login and then the script goes to Related Records in the Dashboard which is a User table-based layout so would show just their individualized records. Will that work or do I need to convert to a global field?
I have not done any WebDirect work so do not know if a 2nd login is needed for redirection or if pulling from the WebDirect login is possible.
Oh, do I need a Global User field to temp put the Get(AccountName) so I can redirect to the correct Dashboard initially?
Just checking, was the "Exactly" for:
(1) A 2nd login is needed for redirection or if pulling from the WebDirect login is possible.
(2) Do I need a Global User field to temp put the Get(AccountName) so I can redirect to the correct Dashboard initially?
2) You need that for you Dashboard
For 1) if you dont want to use FileMaker WebDirect login you can always have users get in directly through Guest account if you set that in File Settings. But that is very insecure so nothing I would recommend
Nope, nope, I like secure. So 2 logins it is!
To make sure I am following what you said, you recommend the UserID be their serial ID # so their login is a number rather than a username (which is associated with that number)?
That login would then utilize that global field ...
Would you possibly elaborate more on the use of the global User field as relates to the login and the Dashboard. I'm getting a little lost on it.
A global User login ID field and PW field in a window that opens on start, I am assuming. That logs the UserID into the gUserID. Do I then setup a relationship between the gUserID (in a Globals table) and regular UserID in my User table, or is the UserID in my User table need to be changed to a/the global field?
Also, once logged in, do I need a Get(AccountName) at all or do I somehow use the new gUserID to go to related record of the Dashboard?
Sorry for the numerous questions. I like 85% follow and am just trying to understand the last 15% of the trick.
To be able to make it work with UserID you need to have that field in each of your table. Not everyone have that, but many developers have CreatedBy field made out of Get(AccountName) . If that is your case, create a field called UserAccountName as global field and use as match field in your relationships to your Dashboard
Yes, in each of my tables I have a User_ID field that when in a layout with that table as a base, via related records (linked to the User_ID in the Users table), and a new record gets created the User_ID is thusly associated.
I currently have the Dashboard based out of the Users table. Below are the fields in the User table:
At present, the Username and Password fields don't do anything, I just assumed I may need them for a login initially.
I should create a UserAccountName global field (in a globals table) and match field relationship with the User_ID in the Users table. ON WebDirect connection I should have the User enter their UserID (number). Can I add a PW or is that too much complication? I want to make sure someone does not by accident enter into the wrong User Account data. Without a PW, if someone enters their User_ID into the global UAN field, hits enter, I can have it go to related records in the Dashboard, is my understanding of what you are saying.
Also, I found this: http://www.modularfilemaker.org/module/accounts-modular-user-account-management/
Is that helpful or way overly complicates?
PS Thank you. I greatly appreciate all your advice, and all the advice this amazing community gives in support to others. It has made figuring out/learning all this coding/creating so much easier than it could have been.
I always have a Global table in my solution where i store different types of Global fields that I need. Have a layout based on that Global table. Store the User ID in OnFirstWindowOpen script for that table and then create relationships for your dashboard from Global Table to your other tables.
That FM module might work for you, but I would stay with FileMakers own security
[I will not complicate with the module then.] I got a login working, setup simply with the UserID enter in a global table layout as the first window and an Enter button (scripted to go to related record in the Dashboard, opened in a new window, and closing the login window).
PS OnFirstWindowOpen runs before the login window pops up, so I cannot store the User ID yet, unless you are saying that the User ID should be the same as the WebDirect login and I can just pull that from the WebDirect login directly? [I was assuming the 2 login discussion meant the User logs in on WebDirect and then I have an initial login window come up as the first window that then directs to the Dashboard on this 2nd login.]
(1) Do I need to clear the global UserAccountName field on OnFirstWindowOpen [in the login window as first window scenario]?
(2) Is there a script step that takes focus out of a specific field? I found that I can enter the UserID, but if I do not click outside of the global UserID field before clicking the "Enter" button, the field is not fully entered.
(3) How do I integrate in a PW on this login so Users cannot go to the wrong UserID records by accident? Is there a script sequence that says unless the UserID matches with the associated PW, do not run said script?
Just checking ... Can I:
(1) Use the FMP login (which gives the Access Privileges, etc, which I'm assuming is the WebDirect login). And assign the AccountName for this login the User_ID number of the User,
(2) Use Get(AccountName) onFirstWindowLoad and have that Set Field into the gUserAccountName,
which then directs to the related record of the correct Dashboard?
And thus skipping over the idea of a 2nd login window?
[This could have been what you have been saying from the start and I did not understand/am momentarily daft. Or, I could be tripping on lack of sleep and be making up all of the above as being possible.]
I am creating a "My Account" menu on the Dashboard and adding in a Logout, a Change Password, and a Re-Login, and realizing they would only apply to the specific FMP User and PW.
This would potentially simplify things greatly. I don't mind assigning a User a number as their Account Name.