Пример #1
0
        protected ImisResponse AttemptIMISLogin(AuthenticateEventArgs e)
        {
            // Get request url from configs
            var requestUrl = Config.Get <ImisConfig>().AuthUrl;

            if (String.IsNullOrWhiteSpace(requestUrl))
            {
                return(null);
            }

            // Set data for request response
            NameValueCollection data = new NameValueCollection()
            {
                { "username", this.UserName }, { "password", this.Password }
            };
            ImisResponse response = null;

            //send and recieve data
            using (WebClient client = new WebClient())
            {
                var responseBytes = client.UploadValues(requestUrl, "POST", data);
                response = JsonSerializer.DeserializeFromString <ImisResponse>(Encoding.UTF8.GetString(responseBytes));
            }

            return(response);
        }
Пример #2
0
        protected User GetOrCreateSitefinityUser(ImisResponse data)
        {
            UserManager uMan = UserManager.GetManager();

            uMan.Provider.SuppressSecurityChecks = true;
            UserProfileManager upMan = UserProfileManager.GetManager();

            upMan.Provider.SuppressSecurityChecks = true;

            var sfUser = uMan.GetUser(this.UserName);

            if (sfUser == null)
            {
                var randomPassword = Membership.GeneratePassword(8, 0);
                MembershipCreateStatus status;
                sfUser = uMan.CreateUser(this.UserName, randomPassword, data.Email, "", "", true, null, out status);
                if (status == MembershipCreateStatus.Success)
                {
                    SitefinityProfile sfProfile = upMan.CreateProfile(sfUser, Guid.NewGuid(), typeof(SitefinityProfile)) as SitefinityProfile;
                    if (sfProfile != null)
                    {
                        sfProfile.FirstName = data.FirstName;
                        sfProfile.LastName  = data.LastName;
                        sfProfile.SetValue("ImisId", data.ImisId);
                        sfProfile.SetValue("MiddleName", data.MiddleName);
                        sfProfile.SetValue("MemberType", data.MemberType);
                        sfProfile.SetValue("Status", data.Status);
                    }
                    uMan.SaveChanges();
                    upMan.RecompileItemUrls(sfProfile);
                    upMan.SaveChanges();

                    var roleManager = RoleManager.GetManager();
                    roleManager.Provider.SuppressSecurityChecks = true;
                    var memberRole = roleManager.GetRole("Member");
                    roleManager.AddUserToRole(sfUser, memberRole);

                    if (data.MemberType.ToLower() == "m" || data.MemberType.ToLower() == "staff")
                    {
                        var activeMemberRole = roleManager.GetRole("SSO Member");
                        roleManager.AddUserToRole(sfUser, activeMemberRole);
                    }

                    roleManager.SaveChanges();
                }
                // Log the status if the create failed
            }
            else
            {
                var sfProfile   = upMan.GetUserProfile <SitefinityProfile>(sfUser);
                var saveChanges = false;
                if (sfProfile.FirstName != data.FirstName)
                {
                    sfProfile.FirstName = data.FirstName;
                    saveChanges         = true;
                }
                if (sfProfile.LastName != data.LastName)
                {
                    sfProfile.LastName = data.LastName;
                    saveChanges        = true;
                }
                if (sfProfile.GetValue <String>("MiddleName") != data.MiddleName)
                {
                    sfProfile.SetValue("MiddleName", data.MiddleName);
                    saveChanges = true;
                }
                if (sfProfile.GetValue <String>("ImisId") != data.ImisId)
                {
                    sfProfile.SetValue("ImisId", data.ImisId);
                    saveChanges = true;
                }
                if (sfProfile.GetValue <String>("MemberType") != data.MemberType)
                {
                    sfProfile.SetValue("MemberType", data.MemberType);
                    saveChanges = true;
                }
                if (sfProfile.GetValue <String>("Status") != data.Status)
                {
                    sfProfile.SetValue("Status", data.Status);
                    saveChanges = true;
                }

                var roleManager = RoleManager.GetManager();
                roleManager.Provider.SuppressSecurityChecks = true;
                var activeMemberRole = roleManager.GetRole("SSO Member");
                if (data.MemberType.ToLower() == "m" || data.MemberType.ToLower() == "staff")
                {
                    roleManager.AddUserToRole(sfUser, activeMemberRole);
                }
                else
                {
                    roleManager.RemoveUserFromRole(sfUser, activeMemberRole);
                }
                roleManager.SaveChanges();

                if (saveChanges)
                {
                    upMan.RecompileItemUrls(sfProfile);
                    upMan.SaveChanges();
                }
            }

            return(sfUser);
        }