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); }
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); }