コード例 #1
0
        /// <summary>
        /// Synchronizes the child users.
        /// </summary>
        /// <param name="userID">The user ID.</param>
        /// <param name="groupID">The group ID.</param>
        public void SynchronizeChildUsers(long userID, long groupID)
        {
            if (userID <= 0)
            {
                return;
            }

            try
            {
                string newSSOAuthToken;
                SSOAuth_UserBasicData[] userBasicDataList =
                    SSOAuthWS.GetGroupUsers(GetSSOAuthData(FCMConfig.Security.SSOApplicationID, SSOAuthToken),
                                            out newSSOAuthToken);

                SSOAuthToken = newSSOAuthToken;

                if (userBasicDataList == null)
                {
                    return;
                }

                foreach (SSOAuth_UserBasicData userBasicData in userBasicDataList)
                {
                    if (userBasicData.RoleID.ToLower() != "child")
                    {
                        continue;
                    }

                    bool synchronised =
                        DbProvidersWS.SynchronizeChildUser(ValidationUtils.GetLong(userBasicData.UserID, 0),
                                                           userBasicData.Username, userID, groupID, userBasicData.Deleted) == 1;

                    if (!synchronised)
                    {
                        Logger.Log(LogLevels.Info,
                                   string.Format("Child user synchronize error | childUserID:'{0}', username:'******', parentID='{2}' groupID:'{3}'",
                                                 userBasicData.UserID, userBasicData.Username, userID, groupID));
                    }
                }
            }
            catch (Exception ex)
            {
                Logger.Log(LogLevels.Error, string.Format("userID:'{0}', groupID:'{1}'", userID, groupID), ex);
            }
        }
コード例 #2
0
        /// <summary>
        /// Reads the user.
        /// </summary>
        /// <param name="user">The user.</param>
        /// <param name="userData">The user data.</param>
        /// <param name="companyData">The company data.</param>
        /// <param name="masterUserData">The master user data.</param>
        /// <param name="groupID">The group ID.</param>
        private static bool ReadUser(ref User user, WebApps_UserData userData, WebApps_CompanyData companyData, WebApps_UserData masterUserData,
                                     int groupID)
        {
            if (userData == null && companyData == null)
            {
                return(false);
            }

            try
            {
                bool isSuperUser = masterUserData == null;

                if (userData != null)
                {
                    user = new User(ValidationUtils.GetLong(userData.UserID, 0), userData.Username,
                                    isSuperUser ? 0 : ValidationUtils.GetLong(masterUserData.UserID, 0),
                                    ValidationUtils.GetLong(groupID, 0), userData.Email, userData.Firstname, userData.Lastname,
                                    userData.Address.AddressName, userData.Address.HouseNumber, userData.Address.ZIP, userData.Address.City,
                                    userData.Telephone, userData.MSISDN, userData.OIB, string.Empty, string.Empty, false,
                                    userData.DefaultCulture, string.Empty, null);

                    if (companyData != null && isSuperUser)
                    {
                        user.CompanyName    = companyData.CompanyName;
                        user.PersonalID     = companyData.OIB;
                        user.CompanyMB      = companyData.MB;
                        user.Address        = companyData.Address.AddressName;
                        user.HouseNumber    = companyData.Address.HouseNumber;
                        user.PostalCode     = companyData.Address.ZIP;
                        user.Place          = companyData.Address.City;
                        user.Telephone      = companyData.Telephone;
                        user.IsBusinessUser = true;
                    }

                    user.IsSuperUser = isSuperUser;
                }

                return(true);
            }
            catch (Exception ex)
            {
                Logger.Log(LogLevels.Error, exception: ex);
                return(false);
            }
        }
コード例 #3
0
        /// <summary>
        /// Wap login.
        /// </summary>
        /// <param name="username">The username.</param>
        /// <param name="password">The password.</param>
        public User WapLogin(string username, string password)
        {
            if (StringUtils.IsNullOrEmptyOrWS(username) || StringUtils.IsNullOrEmptyOrWS(password))
            {
                return(null);
            }

            try
            {
                string culture            = CultureHelper.GetCulture();
                byte[] passwordHash       = EncryptionUtils.ComputeMD5Hash(string.Format("{0}/{1}", password, username.ToLower()));
                string passwordHashString = Convert.ToBase64String(passwordHash);

                string              sessionToken;
                WebApps_UserData    userData;
                WebApps_UserData    masterUserData;
                WebApps_CompanyData companyData;
                int groupID;
                WebApps_ApplicationRole[] applicationRolesDataList;
                string            headerHTML;
                string            footerHTML;
                WebApps_Message[] messageDataList;
                bool passwordExpired;

                bool loggedOn = WebAppsLauncherWS.LogonUser(GetSSOWebAppsLauncherAuthData(), culture, username, passwordHashString,
                                                            out sessionToken, out userData, out masterUserData, out companyData,
                                                            out groupID, out applicationRolesDataList, out headerHTML, out footerHTML,
                                                            out messageDataList, out passwordExpired);

                WebAppsToken = sessionToken;

                if (!loggedOn)
                {
                    Logger.Log(LogLevels.Debug, string.Format("User not logged in! | username:'******'", username));
                    return(null);
                }

                User user = null;

                if (!ReadUser(ref user, userData, companyData, masterUserData, groupID))
                {
                    return(null);
                }

                if (!user.IsSuperUser)
                {
                    SynchronizeUser(ValidationUtils.GetLong(masterUserData.UserID, 0), masterUserData.Username, -666, user.ProvisioningGroupID, user.Firstname, user.Lastname, user.Place);
                }

                bool synchronised = SynchronizeUser(user.UserID, user.Username, user.ParentID, user.ProvisioningGroupID, user.Firstname, user.Lastname, user.Place);

                if (!synchronised)
                {
                    Logger.Log(LogLevels.Debug, string.Format("User not synchronized! | user.UserID:'{0}'", user.UserID));
                    return(null);
                }

                if (user.IsChildUser)
                {
                    user.ChildUserID = user.UserID;
                    user.UserID      = user.ParentID;
                }

                UserID = user.UserID;

                SessionUtils.SetValue(FCMConfig.Project.DefaultName + ".LastSSOSessionRefreshTime", DateTimeHelper.GetSvcProvDateTimeNow());
                return(user);
            }
            catch (SoapException ex)
            {
                Logger.Log(LogLevels.Error, string.Format("username:'******'", username), ex);

                if (!StringUtils.IsNullOrEmptyOrWS(ex.Message) && ex.Message.Contains("00401"))
                {
                    FCMBusiness.ClearSSOCache();
                    return(WapLogin(username, password));
                }

                return(null);
            }
            catch (Exception ex)
            {
                Logger.Log(LogLevels.Error, string.Format("username:'******'", username), ex);
                return(null);
            }
        }
コード例 #4
0
        /// <summary>
        /// Verifies the SSO auth token.
        /// </summary>
        /// <param name="applicationID">The application ID.</param>
        /// <param name="ssoAuthToken">The sso auth token.</param>
        /// <param name="headerHTML">The header HTML.</param>
        /// <param name="footerHTML">The footer HTML.</param>
        public User VerifySSOAuthToken(string applicationID, string ssoAuthToken, out string headerHTML,
                                       out string footerHTML)
        {
            headerHTML = "";
            footerHTML = "";

            if (StringUtils.IsNullOrEmptyOrWS(applicationID) ||
                StringUtils.IsNullOrEmptyOrWS(ssoAuthToken))
            {
                return(null);
            }

            try
            {
                string            sessionCulture;
                string            newSSOAuthToken;
                string[]          allowedApplicationIDs;
                SSOAuth_Message[] messageDataList;
                string            roleID;
                int groupID;
                SSOAuth_UserData    userData;
                SSOAuth_UserData    masterUserData;
                SSOAuth_CompanyData companyData;

                bool verified = SSOAuthWS.VerifyTokenAndGetNew(GetSSOAuthData(applicationID, ssoAuthToken), out sessionCulture,
                                                               out newSSOAuthToken, out allowedApplicationIDs, out headerHTML,
                                                               out footerHTML, out messageDataList, out roleID, out groupID,
                                                               out userData, out masterUserData, out companyData);

                SSOAuthToken = newSSOAuthToken;

                if (!verified)
                {
                    Logger.Log(LogLevels.Debug, string.Format("User not verified! | applicationID:'{0}', ssoAuthToken:'{1}'",
                                                              applicationID, ssoAuthToken));

                    return(null);
                }

                User user = null;

                if (!ReadUser(ref user, userData, companyData, masterUserData, roleID, groupID, allowedApplicationIDs))
                {
                    return(null);
                }

                if (!user.IsSuperUser)
                {
                    SynchronizeUser(ValidationUtils.GetLong(masterUserData.UserID, 0), masterUserData.Username, -666, user.ProvisioningGroupID, user.Firstname, user.Lastname, user.Place);
                }

                bool synchronised = SynchronizeUser(user.UserID, user.Username, user.ParentID, user.ProvisioningGroupID, user.Firstname, user.Lastname, user.Place);


                if (!synchronised)
                {
                    Logger.Log(LogLevels.Debug, string.Format("User not synchronized! | user.UserID:'{0}'", user.UserID));
                    return(null);
                }

                if (user.IsChildUser)
                {
                    user.ChildUserID = user.UserID;
                    user.UserID      = user.ParentID;
                }

                UserID = user.UserID;

                SessionUtils.SetValue(SessionHelper.BuildSessionKey("LastSSOSessionRefreshTime"), DateTimeHelper.GetSvcProvDateTimeNow());
                return(user);
            }
            catch (SoapException ex)
            {
                Logger.Log(LogLevels.Error, string.Format("applicationID:'{0}'", applicationID), ex);

                if (!StringUtils.IsNullOrEmptyOrWS(ex.Message) && ex.Message.Contains("00401"))
                {
                    FCMBusiness.ClearSSOCache();
                    return(VerifySSOAuthToken(applicationID, ssoAuthToken, out headerHTML, out footerHTML));
                }

                return(null);
            }
            catch (Exception ex)
            {
                Logger.Log(LogLevels.Error, string.Format("applicationID:'{0}'", ssoAuthToken), ex);
                return(null);
            }
        }