Alpha Software Mobile Development Tools:   Alpha Anywhere    |   Alpha TransForm subscribe to our YouTube Channel  Follow Us on LinkedIn  Follow Us on Twitter  Follow Us on Facebook

Announcement

Collapse

The Alpha Software Forum Participation Guidelines

The Alpha Software Forum is a free forum created for Alpha Software Developer Community to ask for help, exchange ideas, and share solutions. Alpha Software strives to create an environment where all members of the community can feel safe to participate. In order to ensure the Alpha Software Forum is a place where all feel welcome, forum participants are expected to behave as follows:
  • Be professional in your conduct
  • Be kind to others
  • Be constructive when giving feedback
  • Be open to new ideas and suggestions
  • Stay on topic


Be sure all comments and threads you post are respectful. Posts that contain any of the following content will be considered a violation of your agreement as a member of the Alpha Software Forum Community and will be moderated:
  • Spam.
  • Vulgar language.
  • Quotes from private conversations without permission, including pricing and other sales related discussions.
  • Personal attacks, insults, or subtle put-downs.
  • Harassment, bullying, threatening, mocking, shaming, or deriding anyone.
  • Sexist, racist, homophobic, transphobic, ableist, or otherwise discriminatory jokes and language.
  • Sexually explicit or violent material, links, or language.
  • Pirated, hacked, or copyright-infringing material.
  • Encouraging of others to engage in the above behaviors.


If a thread or post is found to contain any of the content outlined above, a moderator may choose to take one of the following actions:
  • Remove the Post or Thread - the content is removed from the forum.
  • Place the User in Moderation - all posts and new threads must be approved by a moderator before they are posted.
  • Temporarily Ban the User - user is banned from forum for a period of time.
  • Permanently Ban the User - user is permanently banned from the forum.


Moderators may also rename posts and threads if they are too generic or do not property reflect the content.

Moderators may move threads if they have been posted in the incorrect forum.

Threads/Posts questioning specific moderator decisions or actions (such as "why was a user banned?") are not allowed and will be removed.

The owners of Alpha Software Corporation (Forum Owner) reserve the right to remove, edit, move, or close any thread for any reason; or ban any forum member without notice, reason, or explanation.

Community members are encouraged to click the "Report Post" icon in the lower left of a given post if they feel the post is in violation of the rules. This will alert the Moderators to take a look.

Alpha Software Corporation may amend the guidelines from time to time and may also vary the procedures it sets out where appropriate in a particular case. Your agreement to comply with the guidelines will be deemed agreement to any changes to it.



Bonus TIPS for Successful Posting

Try a Search First
It is highly recommended that a Search be done on your topic before posting, as many questions have been answered in prior posts. As with any search engine, the shorter the search term, the more "hits" will be returned, but the more specific the search term is, the greater the relevance of those "hits". Searching for "table" might well return every message on the board while "tablesum" would greatly restrict the number of messages returned.

When you do post
First, make sure you are posting your question in the correct forum. For example, if you post an issue regarding Desktop applications on the Mobile & Browser Applications board , not only will your question not be seen by the appropriate audience, it may also be removed or relocated.

The more detail you provide about your problem or question, the more likely someone is to understand your request and be able to help. A sample database with a minimum of records (and its support files, zipped together) will make it much easier to diagnose issues with your application. Screen shots of error messages are especially helpful.

When explaining how to reproduce your problem, please be as detailed as possible. Describe every step, click-by-click and keypress-by-keypress. Otherwise when others try to duplicate your problem, they may do something slightly different and end up with different results.

A note about attachments
You may only attach one file to each message. Attachment file size is limited to 2MB. If you need to include several files, you may do so by zipping them into a single archive.

If you forgot to attach your files to your post, please do NOT create a new thread. Instead, reply to your original message and attach the file there.

When attaching screen shots, it is best to attach an image file (.BMP, .JPG, .GIF, .PNG, etc.) or a zip file of several images, as opposed to a Word document containing the screen shots. Because Word documents are prone to viruses, many message board users will not open your Word file, therefore limiting their ability to help you.

Similarly, if you are uploading a zipped archive, you should simply create a .ZIP file and not a self-extracting .EXE as many users will not run your EXE file.
See more
See less

Looking for information regarding integrated login and setting fields based on logged in name

Collapse
X
 
  • Filter
  • Time
  • Show
Clear All
new posts

    Looking for information regarding integrated login and setting fields based on logged in name

    Hello. I posted a few months ago regarding understanding how to use the integrated login functionality. That archived thread is http://www.alphasoftware.com/alphafo...?t-115803.html

    Basically, I am trying to understand how exactly to use the e.username and e.userNameFriendly functions in the server-side onLogin and client-side afterLogin sections. I am integrated into AD, and Alpha sees the logged in user name as the "user logon name" from AD. I have an employee table that contains an email address, which is always the "user logon name" @ domainname.com. It also contains fields for first and last name. For purposes that don't really matter for anyone reading this, I need to be able to take the Alpha logged in name, match it to the correct record and poll first and last name, concatenate them into one string and then populate a field in each record with that resulting string. I.E. [email protected] logs in with jdoe, and Alpha automagically writes a "John Doe" to a field in the record ready for when the user submits data.

    I believe this can be done with the UX and the aforementioned tools, but there's no example code anywhere showing exactly how one uses it. I get that I would need to *maybe* make a table mapping "jdoe" to "John Doe" for that type of thing to work but ideally would like to avoid it. Currently I'm testing with stuff like

    Code:
    e.userNameFriendly = "John Doe"
    in server-side onLogin, and
    Code:
    var getName = {dialog.Object}.loggedInUserNameFriendlyGet();
    alert(getName);
    in the client-side afterLogin events. Nothing pops up for an alert, I'm feeling a bit lost. So, if anyone has used this particular function and is willing to share a snippet I'd be greatly appreciative. Thanks!

    #2
    Re: Looking for information regarding integrated login and setting fields based on logged in name

    Nothing doing I guess?

    I'm teaching myself javascript separately during this adventure, but have yet to get deep enough to begin to grok where I even need to start looking. Is there any way to see the code of the various functions being called in Alpha? I'm pretty good at reverse engineering existing code, but for this I have yet to see a working example in the wild. I'd pony up some extra money for development help but honestly I need to learn it otherwise that's quite the $$$ hole. :)

    Comment


      #3
      Re: Looking for information regarding integrated login and setting fields based on logged in name

      i do something like this myself. in the employee component, i have a field called full name, it is the first and last concatenated.
      from another component, i set a session var based on sql lookup matching the logged user (email) to hold the full name, and then i can call that when i want it, same goes for lets say an image for each technician/ employee. if this is what you mean let me know.
      NWCOPRO: Nuisance Wildlife Control Software My Application: http://www.nwcopro.com "Without forgetting, we would have no memory at all...now what was I saying?"

      Comment


        #4
        Re: Looking for information regarding integrated login and setting fields based on logged in name

        Maybe I'll post what it is exactly I'm trying to accomplish, and see if I am skinning the cat the wrong way.

        I have an existing database and application running on Sharepoint, using Access 2013 a webapp. All of that works just fine. It doesn't however render well at all on a mobile browser, hence me purchasing Alpha Anywhere. The Sharepoint app utilizes a function called UserDisplayName() which will pull the first and last name of the AD object credential used to log into the sharepoint site and app. That name gets put into a field named "Record_Creator". I have built a mechanism to filter and requery results to only show records existing in the database that match that logged in user.

        On the AA side then, I am tying into that same database, and also using integrated AD. I had originally made something that worked by allowing a technician to enter his tech number, and using the lookup function I could write the ID and names from the related technician table into appropriate fields and all was fine. UNTIL, I realized that not all browsers play nice with the auto suggest lists. Since this is billing, I simply cannot allow for operator error as it relates to entering data into the system defining who they are. Now my issue is trying to find a way to programatically put the first and last name of the currently logged in user into the "Record_Creator" field so that no matter which app one uses, they play nice with each other.

        Comment


          #5
          Re: Looking for information regarding integrated login and setting fields based on logged in name

          Jared, I can confirm that the use of {dialog.Object}.loggedInUserNameFriendlyGet(); does not give you what you want where you're using it. But you don't need it in Client-side afterLogin.

          afterLogin has a parameter... e.userNameFriendly; which does carry the name set in the server-side event. So... var myName = e.userNameFriendly; does work in Client-side afterLogin.

          Then... let's say...after login, that you set an Active Panel... {dialog.Object}.loggedInUserNameFriendlyGet(); would now give you expected results. So... I believe {dialog.Object}.loggedInUserNameFriendlyGet(); works after "afterLogin" is complete.

          Comment


            #6
            Re: Looking for information regarding integrated login and setting fields based on logged in name

            Thanks David, that sounds a bit more promising. I'll try to get into the groove tomorrow and see if I can make some of those changes and get a different result. I don't even really care about the friendly username, as from what I was reading in the notes I'd need another table mapping the login names to friendly names.

            In the server-side onLogin, it looks like I can use the e.username without needing to bother mapping to a friendly name. How would I go about setting that variable server side and calling it after login client side to assign to a field?

            server-side
            var myName = e.username
            and client side after login
            something other than {dialog.Object}.loggedInUserNameFriendlyGet();
            The release notes say I can do it without making it 'friendly' but there was really not much of anything in the way of a working example to work from. It's just a bit confusing for me, to see how this needs to be set to pull the logged in user data. I really appreciate the effort, I've been stumped with nowhere to go!

            Here's the section I was looking at from the release notes:

            Friendly User Name
            For security reasons, it is not a good idea to expose the logged in user name on the client-side after the user has logged in. In the onLogin server-side event you can execute code to translate the user name that the user logged in with into a 'friendly' user name which can be safely displayed on the client-side.
            For example, assume that you had a table that had two columns - 'userName' and 'friendlyUserName'
            An example entry in the table might be:
            jsmith23 John Smith
            In your onLogin server-side event you would execute code to set e.userNameFriendly by looking up the friendly name for the user name.
            Once you have set e.userNameFriendly in the server-side event, it can be used in the afterLogin client-side event and also in watch expressions.
            TIP: If you do want to have the real logged in user name available on the client-side (for example, so that you can display it in a message like 'Logged in as: [email protected]'), then you can always set the friendly name to the same as the user name in the onLogin server-side event.

            Comment


              #7
              Re: Looking for information regarding integrated login and setting fields based on logged in name

              I think this is what's needed...

              Server-side, onLogin

              dim yourName = "do anything you want to get a name in here"

              Code:
              e.userNameFriendly = yourName
              Client-side, afterLogin... you'll see in this event information on the parameter available. This parameter is automatically passed in as a property of the 'e' object.

              Code:
              var myFriendlyUserName = e.userNameFriendly;
              Last edited by Davidk; 12-02-2015, 05:28 PM.

              Comment


                #8
                Re: Looking for information regarding integrated login and setting fields based on logged in name

                I'll start there, but how does one do that dynamically? That looks like every user that logs in will have their friendly name set to "David Kates" when that variable is called, no? Or am I missing an obvious next step? In my archived post my first idea was to try a 'e.userNameFriendly = e.username' but I don't think I got anywhere with that.

                (I apologize if these are stupid questions, much of this is likely due to my lack of assumed knowledge. I probably need a better background in basic javascript before trying to muck about, I'm working on that.)
                Last edited by jrodder; 12-02-2015, 05:21 PM.

                Comment


                  #9
                  Re: Looking for information regarding integrated login and setting fields based on logged in name

                  I always say... no such think as a stupid question... only stupid answers.

                  Yes... meant to put a variable in there instead of a static value...

                  When you tried e.userNameFriendly = e.username on the server-side, you were using the dialog method on the client side... {dialog.Object}.loggedInUserNameFriendlyGet();

                  This works...

                  Server-side

                  Code:
                  e.userNameFriendly = e.username
                  Client-side

                  Code:
                  var myUserName = e.userNameFriendly;

                  Comment


                    #10
                    Re: Looking for information regarding integrated login and setting fields based on logged in name

                    Gotcha, so I guess I was closer than I realized from the beginning. So I have that specific code where it needs to be, and threw an alert() underneath it in the afterLogin thus;
                    var myUserName = e.userNameFriendly;
                    alert(myUserName);
                    No alert generates. I tried that same code in another section that I thought made sense, onInitializeBegin, and that tries to alert, but is an 'undefined'. I guess I am missing something regarding how the variable makes it from server side to client side? Something of note, in the description for the Client-Side Events afterLogin, it says
                    Fires after a user has logged into the application. 'userFriendlyName' - a friendly name for the user (if set in the server-side onLogin event).
                    The server side describes it as
                    'e.userNameFriendly - This is the value that will be used in the 'FriendlyName' property passed to the client-side 'afterLogin' event..

                    Comment


                      #11
                      Re: Looking for information regarding integrated login and setting fields based on logged in name

                      Objects and properties are specific to what the docs say. You can't use e.userNameFriendly in a Client-side onInitializeBegin event becuase... 1. The 'e' object is not available there... and 2. You're not necessarily logged in at that point.

                      Here's a quick video that shows this process. https://youtu.be/puIK0vv2fnA

                      Comment


                        #12
                        Re: Looking for information regarding integrated login and setting fields based on logged in name

                        Oh wow, you took the time to make a video, that's pretty awesome. I'm going to grok all that and get it functional. Maybe this little thread will be of use to someone else later on!

                        Comment


                          #13
                          Re: Looking for information regarding integrated login and setting fields based on logged in name

                          I forgot to also mention, is this process exactly the same when using integrated AD for login? I can't tell from that video but it looks like you might be doing it with a local database. I have *exactly* what you have done in my program, and I do not get any result alert when logging in. I may just build another app very similar and not using AD to see if I get a different result. If so, I am leaning toward asking if this is maybe a bug, or somehow needs to be different when using AD.

                          **edit**

                          For instance, if I just put an
                          alert("test");
                          inside of the after login, I do not ever get a popup alert like you did in the video. I used a template 'SecurityFramework-LoginComponent' and embedded my ux application inside of that to show up after a successful login. It all works as advertised, AD integrated just fine, I just can't seem to pull a user as such.
                          Last edited by jrodder; 12-03-2015, 03:08 PM.

                          Comment


                            #14
                            Re: Looking for information regarding integrated login and setting fields based on logged in name

                            I'm not currently using AD, but, the Alpha Web Security functions should still produce the same results... I think. Are you using AD under IIS?

                            If you set your server side, onLogin e.userFriendlyName to a static value... does that get passed back to your Client-side afterLogin event?

                            You could also try something like this... in the onLogin event...

                            Code:
                            dim cCurrentUser as c = ""
                            cCurrentUser = Context.Security.CurrentUser
                            e.userNameFriendly = cCurrentUser
                            Finally... what Version Build and Addin Build are you using?

                            Comment


                              #15
                              Re: Looking for information regarding integrated login and setting fields based on logged in name

                              I have tried statically, and the code you have supplied, to no avail. I am still wondering why a simple 'alert("test");' doesn't work in the afterLogin function, as you had done in the video. I can certainly get that alert to function elsewhere in the program. It's almost as if it's just being ignored.

                              desktop is running Version AA 3.5 - Version 12.3, Build 2999 - System Addins: Build 4519
                              server is IIS, using MS AD, Bulid 2999-4519

                              Comment

                              Working...
                              X