Esempio n. 1
0
 protected void btnLiveID_Click(object sender, EventArgs e)
 {
     if (txtLiveAuthID.Value != "")
     {
         var secValidator = new SOS.Service.Security.AuthTokenValidator(txtLiveAuthID.Value);
         txtLiveUserID.Value = secValidator.Result.UserID;
     }
 }
Esempio n. 2
0
        /// <summary>
        /// Authorize User based on existence in the app.
        /// </summary>
        /// <param name="AuthToken">Live Auth Token </param>
        /// <param name="Type">User ('u') and Admin ('a')</param>
        /// <returns>
        /// Cached User if authorized.
        /// If user exists, SOSUserID will be filled, otherwise null or empty.
        /// If exists in app, uses cache
        /// </returns>
        protected CacheUser AuthorizeUser(string AuthToken, char Type, string GroupID = "")
        {
            if (lastCacheRefreshedTime < DateTime.Now.AddHours(-2))// Local Cache reset interval - 2hr
            {
                AuthCache.Clear();
                lastCacheRefreshedTime = DateTime.Now;
            }

            //TODO: TO IMPLEMENT Access Tags (SelfCreateEdit, SelfCreateOnly - createprofile only, etc)
            CacheUser retUser = new CacheUser()
            {
                UserType = Type
            };

            //Check in CACHE
            //If Not Exist Verify and load into Cache
            var key = AuthToken + "-" + Type.ToString() + "-" + GroupID;

            CacheUser cachedUser = new CacheUser()
            {
                IsValid = false
            };

            if (!AuthCache.TryGetValue(key, out cachedUser))
            {
                AuthCache.TryAdd(key, cachedUser);

                var secValidator = new SOS.Service.Security.AuthTokenValidator(AuthToken);
                var securityrslt = secValidator.Result;
                if (securityrslt.IsValid)
                {
                    if (Type == 'a')
                    {
                        retUser.IsValid    = securityrslt.IsValid;
                        retUser.IsExpired  = securityrslt.IsExpired;
                        retUser.UserType   = 'a';
                        retUser.LiveUserID = securityrslt.UserID;

                        //Get Admin User and load it
                        GroupService GA     = new GroupService();
                        var          cAdmin = GA.GetAdminProfile(securityrslt.UserID);
                        if (cAdmin != null)
                        {
                            retUser.SOSUserID = cAdmin.AdminID.ToString();

                            if (string.IsNullOrEmpty(GroupID) || cAdmin.GroupIDCSV == GroupID)
                            {
                                retUser.IsValid = true;
                            }
                            else
                            {
                                retUser.IsValid = false;
                            }

                            AuthCache.AddOrUpdate(key, retUser, (k, oldValue) => retUser);
                        }
                    }
                    else if (Type == 'u')
                    {
                        retUser.IsValid    = securityrslt.IsValid;
                        retUser.IsExpired  = securityrslt.IsExpired;
                        retUser.UserType   = 'u';
                        retUser.LiveUserID = securityrslt.UserID;

                        //Get Normal User and Load It.
                        MemberService MS    = new MemberService();
                        User          cUser = MS.ValidatedAndGetUser(securityrslt.UserID).Result;
                        if (cUser != null)
                        {
                            retUser.SOSUserID = cUser.UserID.ToString();
                            AuthCache.AddOrUpdate(key, retUser, (k, oldValue) => retUser);
                        }
                    }
                }
            }
            else
            {
                retUser = cachedUser as CacheUser;
            }
            return(retUser);
        }