Have you tried simply sending the equivalent RQL over the webservices? The RQL response sends back quite a bit of info.
On Wed, Dec 16, 2009 at 8:24 AM, TonyGayter <[email protected]>wrote: > Thanks for the reply, This does seem to be the simplest solution (kind > of) however it assumes the ability to have a free admin license to log > in with. I cant guarantee the availability of multiple admin licenses > to be able to do this (each session takes up 1). For example, if a > client has purchased 2 admin licenses and one is locked to my user, > and another to the admin of the site. How would I be able to log my > user off and back on (or indeed just get the login id ans session id)? > Using this method I would be stuck. > > In the manual it says if the user account is locked out it should send > the users details (login guid etc) in the response, which it does in > certain circumstances (I can see the response I want in the common > log). If this response was return correctly via web services there > would be no problem at all. > > It seems the web services have just been thrown together with no > regards to what should actually be returned!! I cant believe this > fundamental function does not work correctly. Its driving me crazy. > > > > > > On Dec 16, 2:05 pm, Kenley Capps <[email protected]> wrote: > > Ack! Terribly sorry for the double post! This google group has been > acting > > very strangely for me, and Thunderbird decided to go ahead and send my > email > > out instead of saving as a draft! :)On Wed, Dec 16, 2009 at 8:02 AM, > Kenley Capps <[email protected]> wrote: > > > Finally! My messages are going through! OK. > > > > > First off, let me preface that I currently use the webservices (for > > > flexibility.) If you're using a page in SmartEdit or just a standalone > page > > > on the server, you can still make use of RQL to achieve the same thing. > > > > > LOGGING IN (WEBSERVICES) > > > The guid is passed back as the response from the webservice, if > successful. > > > I'll use a .NET example (assuming you've added the webservice to your > > > solution): > > > > > if (service == null) > > > { > > > service = new > > > YourCompany.RedDot.CMS.RQL.SessionService.SessionService(); > > > service.Timeout = SERVICE_TIMEOUT; > > > } > > > > > guid = service.Login(username, password); > > > Console.WriteLine("Successful login with loginid {0}", > > > guid); > > > > > LOGGING IN (RQL) > > > The guid is passed back along with some information when you send the > > > proper request: > > > > > Login Request: > > > <IODATA> > > > <ADMINISTRATION action="*login*" name="*admin*" > password="*password*"/> > > > </IODATA> > > > > > Example response: > > > <IODATA> > > > <LOGIN guid="*[!guid_login!]*" server="*MyServer*" > > > serverguid="*[!guid_server!]*" userkey="*[!key_user!]*" > > > usertoken="*[!key_token!]*"/> > > > <USER guid="*[!guid_user!]*" name="*admin*" fullname="*Admin*" > id="*1*" > > > flags1="*0*" flags2="*32768*" dialoglanguageid="*ENU*" > > > dialogtextdirection="" languageid="*ENU*" showstarthelp="*0*" > lcid="* > > > 1031*" > > > navigationtype="*0*" preferrededitor="*0*" invertdirectedit="*0*"> > > > <MODULES> > > > <MODULE guid="*[!guid_module!]*" id="*cms*" name="*0*"> > > > <MODULES> > > > <MODULE guid="*[!guid_module!]*" id="*smarttree*" > name="*13769* > > > "/> > > > ... > > > </MODULES> > > > </MODULE> > > > <MODULE guid="*[!guid_module!]*" id="*ccs*" name="*0*" > repository="* > > > xcms1*"> > > > <MODULES> > > > <MODULE guid="*[!guid_module!]*" id="*dms*" name="*13774*"/> > > > ... > > > </MODULES> > > > </MODULE> > > > ... > > > </MODULES> > > > <LASTMODULES> > > > <MODULE project="*[!guid_project!]*" projectname="*Project name*" > > > id="*smarttree*" guid="*[!guid_module!]*" lastid="*smarttree*" > > > lastguid="*[!guid_!]*" last="*0*"/> > > > ... > > > </LASTMODULES> > > > </USER> > > > </IODATA> > > > You're looking specifically for the value of guid attribute from that > > > response. > > > > > OK. We've got our login guid. However, if our app ever crashes or > leaves a > > > session hanging, then we need to be able to log that stale session off! > > > Unfortunately the only way to accomplish this is to increase the number > of > > > allowed concurrent sessions to 2 or more for the "RQL" user, so it can > login > > > and logoff the other concurrent sessions. Otherwise, you'll just > receive an > > > error back (from the webservices it says RDE101 if I recall correctly.) > > > > > So in order to do this, we have to perform the following (after logging > > > in): > > > 1. Get a list of all online users > > > 2. Loop through and find the one that has the same username as you > > > 3. Log that session off > > > > > STEP 1: List all online users: > > > <IODATA loginguid="*[!guid_login!]*"> > > > <ADMINISTRATION> > > > <USERS action="*connectlist*"/> > > > </ADMINISTRATION> > > > </IODATA> > > > > > Example response: > > > <IODATA> > > > <USERS> > > > <USER guid="*[!guid_user!]*" id="*1*" name="*name*" > > > fullname="*First name Last name*" flags1="*0*" flags2="*0*" > > > email="*[email protected]*" maxlevel="*1*" > dialoglanguageid="*ENU*" > > > loginguid="*[!guid_login!]*" logindate="*37551,3837384259*"/> > > > moduleid="*servermanager*" intern="*0*" > > > moduledescription="*Server Manager*" projectname="*Up-And-Away*" > > > projectguid="*[!guid_project!]*"/> > > > ... > > > </USERS> > > > </IODATA> > > > > > Note that you can specify a specific userguid element on the request to > > > list all online users to retrieve only the concurrent sessions for that > > > user. However, since we don't necessarily have the guid of the current > user > > > (if we used the webservices), then we'll just list all online users and > look > > > for our specific ones. > > > > > STEP 2: Loop through all users in that result set, and find the one > that > > > matches your username > > > I use the following process (actual snippet from a .NET wrapper I've > worked > > > on): > > > > > // In the Session class > > > List<User> users = User.ListOnline(); > > > foreach(User sessionUser in users) > > > { > > > if (sessionUser.Name == username) > > > { > > > if (sessionUser.LoginGuid == guid) > > > { > > > this.user = sessionUser; > > > } > > > else if (logoutConcurrentInstances) > > > { > > > Logout(sessionUser); > > > } > > > } > > > } > > > > > As you can see, if you find the user with your name and your loginguid, > > > that's you. Otherwise, if you have opted into logging out concurrent > > > instances, log that user out (since they have the same username, but > not the > > > same login guid) > > > > > Finally, > > > STEP 3: Logout user > > > This one is pretty basic. > > > > > LOGGING OUT (Webservices): > > > > > Following the snippet from logging in via webservices, logging out is > > > incredibly simple: > > > service.Logout(guid); > > > > > LOGGING OUT (RQL): > > > > > Request: > > > <IODATA loginguid="*[!guid_login!]*"> > > > <ADMINISTRATION> > > > <LOGOUT guid="*[!guid_login!]*"/> > > > </ADMINISTRATION> > > > </IODATA> > > > > > Response: > > > <IODATA> > > > </IODATA> > > > > > And you're done! I hope this was helpful. > > > > > On 12/16/09 2:50 AM, TonyGayter wrote: > > > > > Also th euser woul dprobobly be an admin, many of our clients only > > > have 2-3 admin logins, Im assuming each session woul duse up an admin > > > license which woul dcause uproar. > > > > > On Dec 16, 8:48 am, TonyGayter <[email protected]> < > [email protected]> wrote: > > > > > If you have some code for this action that would be great, Im banging > > > my head against a brick wall with reddot at the moment. > > > > > Increasing the number of allowed sessions isnt really the best way to > > > tackle the issue, for example, what happens if I write an admin tool > > > and the pc crashes out a few times (leaving the user logged in) it > > > could still hit the session limit. > > > > > On Dec 14, 4:41 pm, Kenley Capps <[email protected]> < > [email protected]> wrote: > > > > > I've been having issues with replying to the google groups. If this > goes > > > through, I have the code to do it and will provide (I also created a > > > .NET wrapper mostly because I needed a lot more than RustyLogic's > provided.) > > > > > On 12/14/09 10:35 AM, TonyGayter wrote: > > > > > Hmmm, I had forgotton that, Surely they store it somewhere > though? > > > This is goin got drive me nuts. > > > > > On Dec 14, 4:29 pm, "Killingsworth, Chad > A"<[email protected]> > <[email protected]> wrote: > > > > > Login GUIDS and Session GUIDs are stored in ASP Session > variables. > > > > > Now for the fun part where you realize that since ASP.Net and > ASP do not share the same session objects - you have a tricky problem. > > > > > Chad Killingsworth > > > Assistant Director of Web& New Media > > > Missouri State University > > > > > -----Original Message----- > > > From: [email protected] [mailto: > [email protected] <[email protected]>] On > Behalf Of tonyg > > > Sent: Monday, December 14, 2009 8:39 AM > > > To: RedDot CMS Users > > > Subject: RQL Commands > > > > > Im currectly writing a .net wrapper for RQL and after the first > > > iteration have hit a small problem. > > > > > If I use RQL to login I get the XML response, all well and good > as it > > > has the session and login guids etc. However; how do I get these guids > > > for a user that has already logged in? > > > > > I cant find the the way to get login guids in the RQL manual, I > know > > > you can log people out using rql but to do this you still need the > > > login guid!! There must be a way to either log a user off using > > > username or a way to get the guids for a currently logged in user? > > > Surely? > > > > > Thanks in advance > > > Tony > > > > > -- > > > > > You received this message because you are subscribed to the > Google Groups "RedDot CMS Users" group. > > > To post to this group, send email to [email protected] > . > > > To unsubscribe from this group, send email to > [email protected]<reddot-cms-users%[email protected]> > . > > > For more options, visit this group athttp:// > groups.google.com/group/reddot-cms-users?hl=en.-Hidequotedtext - > > > > > - Show quoted text - > > > > > -- > > > > > You received this message because you are subscribed to the > Google Groups "RedDot CMS Users" group. > > > To post to this group, send email to [email protected] > . > > > To unsubscribe from this group, send email to > [email protected]<reddot-cms-users%[email protected]> > . > > > For more options, visit this group athttp:// > groups.google.com/group/reddot-cms-users?hl=en.-Hidequoted text - > > > > > - Show quoted text -- Hide quoted text - > > > > > - Show quoted text - > > > > > -- > > > > > You received this message because you are subscribed to the Google > Groups "RedDot CMS Users" group. > > > To post to this group, send email to [email protected] > . > > > To unsubscribe from this group, send email to > [email protected]<reddot-cms-users%[email protected]> > . > > > For more options, visit this group athttp:// > groups.google.com/group/reddot-cms-users?hl=en. > > -- > > You received this message because you are subscribed to the Google Groups > "RedDot CMS Users" group. > To post to this group, send email to [email protected]. > To unsubscribe from this group, send email to > [email protected]<reddot-cms-users%[email protected]> > . > For more options, visit this group at > http://groups.google.com/group/reddot-cms-users?hl=en. > > > -- You received this message because you are subscribed to the Google Groups "RedDot CMS Users" group. To post to this group, send email to [email protected]. To unsubscribe from this group, send email to [email protected]. For more options, visit this group at http://groups.google.com/group/reddot-cms-users?hl=en.
