public SimpleMembershipInitializer()
            {
                Database.SetInitializer<UsersContext>(null);

                try
                {
                    using (var context = new UsersContext())
                    {
                        if (!context.Database.Exists())
                        {
                            // Create the SimpleMembership database without Entity Framework migration schema
                            ((IObjectContextAdapter)context).ObjectContext.CreateDatabase();
                            WebSecurity.InitializeDatabaseConnection("DefaultConnection", "UserProfile", "UserId", "UserName", autoCreateTables: true);
                        }
                    }

                }
                catch (Exception ex)
                {
                    throw new InvalidOperationException("The ASP.NET Simple Membership database could not be initialized. For more information, please see http://go.microsoft.com/fwlink/?LinkId=256588", ex);
                }
            }
Пример #2
0
 public ActionResult GetSub(string id)
 {
     UsersContext user = new UsersContext();
     var useThis = from values in user.valuePerSettings
                   where values.settingId_settingId.Key == id
                   where !(from memSet in user.memberSettings
                           where memSet.UserId.UserId == WebSecurity.CurrentUserId
                           select memSet.literalValue).Contains(values.value)
                   select new { values.value, values.description };
     return Json(useThis, JsonRequestBehavior.AllowGet);
 }
Пример #3
0
        public List<string> getValidSettings()
        {
            Headline.Models.UsersContext user = new Headline.Models.UsersContext();
            List<string> listtouse = new List<string>();
            var settings = from settingValues in user.valuePerSettings
                           join settingId in user.Settings
                           on settingValues.settingId_settingId equals settingId
                           join groupSettingId in user.defineSettingGroups
                           on settingId.groupId.settingGroupId equals groupSettingId.settingGroupId
                           where (from literalValue in user.memberSettings
                                  where literalValue.UserId.UserId == WebSecurity.CurrentUserId
                                  select literalValue.literalValue).Contains(settingValues.value)
                           select new { settingId, settingValues };

            foreach (var item in settings)
            {
                listtouse.Add(item.settingId.Key + ":" + item.settingValues.value);
            }
            return listtouse;
        }
Пример #4
0
        public ActionResult SettingDefine(settingDefineViewModel model, string returnUrl)
        {
            //if (model.memset.settingId.groupId != null)
            //{
            using (var db = new UsersContext())
            {
                if (model.literalValue == null || model.literalValue == "")
                {
                    ModelState.AddModelError("", "Your setting value is missing, please try again");
                    return View(new searchHeadlineViewModel());
                }
                if (model.settingName == null || model.settingName == "")
                {
                    ModelState.AddModelError("", "Your setting is missing, please try again");
                    return View(new searchHeadlineViewModel());
                }
                var defaultColor = "";
                var defaultFont = "";
                var defaultHighlight = "";
                if (model.settingName == "styleSheet")
                {
                    switch (model.literalValue)
                    {
                        case "Foundation":
                            defaultColor = "Black";
                            defaultFont = "white";
                            defaultHighlight = "white";
                            break;
                        case "Windows":
                            defaultColor = "white";
                            defaultFont = "silver";
                            defaultHighlight = "blue";
                            break;
                    }
                    memberSetting defaultNeeded = db.memberSettings.FirstOrDefault(u => u.UserId.UserId ==
                        WebSecurity.CurrentUserId && u.settingId_settingId.Key == "backgroundColor");
                    memberSetting defaultNeeded2 = db.memberSettings.FirstOrDefault(u => u.UserId.UserId ==
                        WebSecurity.CurrentUserId && u.settingId_settingId.Key == "fontColor");
                    memberSetting defaultNeeded3 = db.memberSettings.FirstOrDefault(u => u.UserId.UserId ==
                        WebSecurity.CurrentUserId && u.settingId_settingId.Key == "highlightColor");
                    defaultNeeded.literalValue = defaultColor;
                    defaultNeeded2.literalValue = defaultFont;
                    defaultNeeded3.literalValue = defaultHighlight;
                }


                var settouse = (from set in db.Settings
                                where set.Key == model.settingName//model.settingId.name
                                select set.Key).FirstOrDefault();

                memberSetting memset = db.memberSettings.FirstOrDefault(u => u.UserId.UserId == WebSecurity.CurrentUserId
                    && u.settingId_settingId.Key == model.settingName);
                memset.literalValue = model.literalValue;
                db.SaveChanges();
            }
            //}
            return View(new settingDefineViewModel());
        }
Пример #5
0
        public ActionResult additionalDetails(additionalMemberDetailsViewModel model, HttpPostedFileBase file)
        {
            UsersContext db = new UsersContext();
            if (model.deleteProfileImage)
            {
                memsr.deleteProfileImage(file, WebSecurity.CurrentUserName);
            }
            else
            {
                if (model.userdetails.useOnlineImg == false)
                {
                    files.updateImage(file, WebSecurity.CurrentUserName,"member");
                }
            }

            userDefinition user = (from users in db.userDefinition
                                   join user2 in db.UserProfiles
                                   on users.usernameFK equals user2
                                   where user2.UserId == WebSecurity.CurrentUserId
                                   select users).FirstOrDefault();
            user.recoveryEmail = model.userdetails.recoveryEmail;
            user.forename = model.userdetails.forename;
            user.surname = model.userdetails.surname;
            user.isPublic = model.userdetails.isPublic;
            user.birthday = model.userdetails.birthday;
            user.help = model.userdetails.help;
            user.securityAnswer = model.userdetails.securityAnswer;
            user.securityQuestionID = (from secans in db.securityQuestions
                                       select secans).FirstOrDefault();
            user.homePage = model.userdetails.homePage;
            user.emailAddress = model.userdetails.emailAddress;
            user.activitiesPublic = model.userdetails.activitiesPublic;
            user.followingPublic = model.userdetails.followingPublic;
            user.DOBPublic = model.userdetails.DOBPublic;
            user.interestPublic = model.userdetails.interestPublic;
            user.useOnlineImg = model.userdetails.useOnlineImg;
            user.language = (from lang in db.languages
                             where lang.languageID == model.userdetails.language.languageID
                             select lang).First();
            if (model.userdetails.useOnlineImg)
            {
                if (model.deleteProfileImage)
                {
                    user.onlineUrl = "";
                }
                else
                {
                    if (model.userdetails.useOnlineImg)
                    {
                        user.onlineUrl = model.userdetails.onlineUrl;
                    }
                }
            }
            db.SaveChanges();
            return View(new additionalMemberDetailsViewModel());
        }
Пример #6
0
        public PartialViewResult _saveSecurePicture(securePictureViewModel model)
        {
            UsersContext user = new UsersContext();
            var currentSecureString = (from sec in user.userDefinition
                                       where sec.usernameFK.UserName == WebSecurity.CurrentUserName
                                       select sec.secure).First();
            if (model.checkCurrentSecure)
            {
                if (sec.GetMD5Hash(model.secureString) == currentSecureString)
                {
                    if (currentSecureString != "")
                    {
                        ModelState.AddModelError("securePassword", "checkCurrent = true, image matches = true");
                    }
                    else
                    {
                        ModelState.AddModelError("securePassword", "checkCurrent = true, image matches = none currently stored");
                    }
                }
                else
                {
                    ModelState.AddModelError("securePassword", "checkCurrent = true, image matches = false");
                }

            }
            else
            {
                userDefinition userPicture = (from u in user.userDefinition
                                              where u.usernameFK.UserName == WebSecurity.CurrentUserName
                                              select u).First();
                userPicture.secure = sec.GetMD5Hash(model.secureString);
                user.SaveChangesAsync();
                ModelState.AddModelError("securePassword", "User should have updated image");
            }
            return PartialView("_saveSecurePicture");

        }
Пример #7
0
        public void updateUserPermission(string username, List<string> permlist, string headlinename)
        {
            UsersContext user = new UsersContext();
            removePermission(username, headlinename);
            var isView = permlist[0].Substring(5).ToString();
            var isEdit = permlist[1].Substring(6).ToString();
            var isInsert = permlist[2].Substring(8).ToString();
            if (isView == "false" && isEdit == "false" && isInsert == "false")
            {
                var userRemove = (from headlineuse in user.headlineToUsers
                                  join headlines in user.headlines
                                  on headlineuse.headlineID equals headlines
                                  join users in user.UserProfiles
                                  on headlineuse.personID equals users
                                  where users.UserName == username
                                  where headlines.title == headlinename
                                  select headlineuse).FirstOrDefault();
                var headlineToUpdate = (from headlines in user.headlines
                                        where headlines.title == headlinename
                                        select headlines).FirstOrDefault();
                headlineToUpdate.followingCount -= 1;
                user.headlineToUsers.Remove(userRemove);
                user.SaveChanges();
            }
            foreach (var item in permlist)
            {
                var permissionEdit = ""; var index = 0;
                var indexToUse = item.IndexOf(":");
                switch (indexToUse)
                {
                    case 4:
                        permissionEdit = "view";
                        index = 4;
                        break;
                    case 5:
                        permissionEdit = "edit";
                        index = 5;
                        break;
                    case 7:
                        permissionEdit = "insert";
                        index = 7;
                        break;
                }
                var isThisSet = item.Substring(index + 1).ToString();
                if (isThisSet == "true")
                {

                    user.permissionsToGroup.Add(new permissionToGroup
                    {
                        sourceID = (from headlines in user.headlines
                                    where headlines.title == headlinename
                                    select headlines.headlineDefinedId).First(),
                        defineGroup = (from groups in user.groups
                                       where groups.groupName == headlinename + permissionEdit
                                       select groups).First(),
                        defineSource = "Headline",
                        permissionDefined = (from perms in user.permissions
                                             where perms.permissionName == permissionEdit
                                             select perms).First(),
                        personConnecting = (from users in user.UserProfiles
                                            where users.UserName == username
                                            select users).First()
                    });
                    user.SaveChanges();
                }
            }
        }
Пример #8
0
 public void removePermission(string username, string headlinename)
 {
     UsersContext user = new UsersContext();
     var removeThese = (from permg in user.permissionsToGroup
                        join perms in user.permissions on permg.permissionDefined equals perms
                        join groups in user.groups on permg.defineGroup equals groups
                        where perms.permissionName == "view" || perms.permissionName == "edit"
                        || perms.permissionName == "insert"
                        where permg.personConnecting.UserName == username
                        where groups.groupName.Contains(headlinename)
                        select permg.ID).ToList();
     foreach (var item in removeThese)
     {
         var toRemove = (from permg in user.permissionsToGroup
                         where permg.ID == item
                         select permg).First();
         user.permissionsToGroup.Remove(toRemove);
     }
     user.SaveChanges();
 }
Пример #9
0
        public ActionResult Register(registerViewModel model, HttpPostedFileBase file)
        {
            bool hasError = false;
            ViewBag.username = model.UserName;
            ViewBag.identifier = mem.imRegistering(true);
            int countLanguageValid = (from lang in user.languages
                                      where lang.languageID == model.languageDefined
                                      select lang).Count();
            int countProfile = (from us in user.UserProfiles
                                where us.UserName == model.UserName
                                select us).Count();
            if (countProfile > 0)
            {
                if ((from def in user.userDefinition
                     join use in user.UserProfiles
                         on def.usernameFK equals use
                     where use.UserName == model.UserName
                     select def.isArchived).First())
                {
                    ModelState.AddModelError("", "This username is archived currently, please try an alternative");
                    hasError = true;
                }
            }
            if (countLanguageValid < 1)
            {
                hasError = true;
                ModelState.AddModelError("", "Please check your language is valid");
            }
            if (model.Password != null)
            {
                if (model.Password.Length < 8 || sec.checkLower(model.Password) == false || sec.checkUpper(model.Password) == false || sec.containsNumber(model.Password) == false)
                {
                    hasError = true;
                    ModelState.AddModelError("", "Your passwords does not pass the validation rules");
                }
                if (model.Password != model.ConfirmPassword) { ModelState.AddModelError("", "Your passwords must match"); hasError = true; }
            }
            if (model.UserName != null && model.UserName.Length < 4) { ModelState.AddModelError("", "Your username must be at least 4 characters long"); hasError = true; }
            {
                if (model.securityQuestionID == -1) { ModelState.AddModelError("", "A security question must be selected"); hasError = true; }
                bool validPersonType = mem.personTypeValid(model.personType);
                if (validPersonType == false) { ModelState.AddModelError("", "Your person type is not recognised"); hasError = true; }

                if (hasError) { return View(new registerViewModel()); }
                UsersContext yt = new UsersContext();
                if (ModelState.IsValid && hasError == false)
                {
                    // Attempt to register the user
                    try
                    {

                        memadd.registerUser(model, false);
                        loginViewModel loggingIn = new loginViewModel();
                        loggingIn.UserName = model.UserName;
                        loggingIn.Password = model.Password;
                        loggingIn.RememberMe = true;
                        Login(loggingIn, "/Member/memberDetails/");
                        user.SaveChanges();
                        //            memadd.addUsage(model.UserName);
                        files.updateImage(file, model.UserName, "member");
                        {
                            ViewBag.Title = "Welcome " + WebSecurity.CurrentUserName + " check your details here";
                            return RedirectToAction("memberDetails", "member");
                        }
                    }
                    catch (MembershipCreateUserException e)
                    {
                        ModelState.AddModelError("", ErrorCodeToString(e.StatusCode));
                    }
                }

                // If we got this far, something failed, redisplay form
                return View(model);
            }
        }
Пример #10
0
 public RegisterViewModel()
 {
     ApplicationDbContext appDB = new ApplicationDbContext();
     UsersContext db = new UsersContext();
     foreach(var role in appDB.Roles)
     {
         personTypes.Add(new SelectListItem { Text = role.Name });
     }
     var secAnswers = (from sec in db.securityQuestions
                       select sec).ToList();
     foreach(var sec in secAnswers)
     {
         securityQuestions.Add(new SelectListItem { Text = sec.securityQuestion, Value = sec.questionID.ToString() });
     }
 }
Пример #11
0
 public ActionResult forgotUsername(forgotUsername model, string returnUsername)
 {
     UsersContext user = new UsersContext();
     var username = from users in user.userDefinition
                    join user2 in user.UserProfiles
                    on users.usernameFK equals user2
                    where users.emailAddress == model.emailAddress
                    where users.securityAnswer == model.securityAnswer
                    select user2.UserName;
     foreach (var row in username)
     {
         ViewBag.username = row;
         return View();
     }
     ViewBag.username = "******";
     return View();
 }
Пример #12
0
        public ActionResult ExternalLoginConfirmation(RegisterExternalLoginModel model, string returnUrl)
        {
            string provider = null;
            string providerUserId = null;

            if (User.Identity.IsAuthenticated || !OAuthWebSecurity.TryDeserializeProviderUserId(model.ExternalLoginData, out provider, out providerUserId))
            {
                return RedirectToAction("Manage");
            }

            if (ModelState.IsValid)
            {
                // Insert a new user into the database
                using (UsersContext db = new UsersContext())
                {
                    UserProfile user = db.UserProfiles.FirstOrDefault(u => u.UserName.ToLower() == model.UserName.ToLower());
                    // Check if user already exists
                    if (user == null)
                    {
                        // Insert name into the profile table
                        if (model.Password.Length < 8 || sec.checkLower(model.Password) == false || sec.checkUpper(model.Password) == false || sec.containsNumber(model.Password) == false)
                        {
                            ModelState.AddModelError("", "Your passwords does not pass the validation rules");
                            return View();
                        }

                        //db.UserProfiles.Add(new UserProfile { UserName = model.UserName });
                        //db.SaveChanges();

                        //OAuthWebSecurity.CreateOrUpdateAccount(provider, providerUserId, model.UserName);
                        //OAuthWebSecurity.Login(provider, providerUserId, createPersistentCookie: false);
                        registerViewModel external = new registerViewModel()
                        {
                            UserName = model.UserName,
                            Password = model.Password,
                            interestPublic = false,
                            activitiesPublic = false,
                            followingPublic = false,
                            DOBPublic = false,
                            styleSheetName = "Foundation",
                            personType = (from pt in db.personType
                                          where pt.personTypeID == 1
                                          select pt.Description).FirstOrDefault(),
                            onlineImg = model.onlineImg,
                            useOnlineImg = model.useOnline
                        };
                        memadd.registerUser(external, true);
                        memadd.addUsage(model.UserName);
                        {
                            ViewBag.Title = "Welcome " + model.UserName + " check your details here";
                            mem.imRegistering(false);
                            return RedirectToAction("memberDetails", "member");
                        }
                        //return RedirectToLocal(returnUrl);
                    }
                    else
                    {
                        ModelState.AddModelError("UserName", "User name already exists. Please enter a different user name.");
                    }
                }
            }

            ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(provider).DisplayName;
            ViewBag.ReturnUrl = returnUrl;
            return View(model);
        }
Пример #13
0
        public ActionResult ExternalLoginCallback(string returnUrl, HttpPostedFileBase thirdprofile)
        {
            UsersContext user = new UsersContext();
            AuthenticationResult result = OAuthWebSecurity.VerifyAuthentication(Url.Action("ExternalLoginCallback", new { ReturnUrl = returnUrl }));
            if (!result.IsSuccessful)
            {
                return RedirectToAction("ExternalLoginFailure");
            }

            if (OAuthWebSecurity.Login(result.Provider, result.ProviderUserId, createPersistentCookie: false))
            {
                return RedirectToLocal(returnUrl);
            }

            if (User.Identity.IsAuthenticated)
            {
                // If the current user is logged in add the new account
                OAuthWebSecurity.CreateOrUpdateAccount(result.Provider, result.ProviderUserId, User.Identity.Name);
                return RedirectToLocal(returnUrl);
            }
            else
            {
                // User is new, ask for their desired membership name
                string loginData = OAuthWebSecurity.SerializeProviderUserId(result.Provider, result.ProviderUserId);
                ViewBag.ProviderDisplayName = OAuthWebSecurity.GetOAuthClientData(result.Provider).DisplayName;
                ViewBag.ReturnUrl = returnUrl;
                mem.imRegistering(true);

                return View("ExternalLoginConfirmation", new RegisterExternalLoginModel { UserName = result.UserName, ExternalLoginData = loginData, userId = result.ProviderUserId });
            }
        }
Пример #14
0
 public ActionResult GetDescription(string value)
 {
     UsersContext user = new UsersContext();
     var getTheDescription = from values in user.valuePerSettings
                             where values.value == value
                             select values.description;
     return Json(getTheDescription, JsonRequestBehavior.AllowGet);
 }
Пример #15
0
 public void requestPermission(string permissionLevel, string headlinename)
 {
     UsersContext user = new UsersContext();
     //remove all associated permissions first
     removePermission(WebSecurity.CurrentUserName, headlinename);
     string userForRequest = (from users in user.UserProfiles
                              join headlines in user.headlines
                              on users equals headlines.adminId
                              where headlines.title == headlinename
                              select users.UserName).First();
     user.notifications.Add(new notifications
     {
         forType = itemType.headline,
         fromWho = WebSecurity.CurrentUserName,
         messageType = messageType.permissionRequest,
         read = false,
         toWho = (from use in user.UserProfiles
                  where use.UserName == userForRequest
                  select use).First(),
         optionalData1 = permissionLevel,
         typeID = (from hline in user.headlines
                   where hline.title == headlinename
                   select hline.headlineDefinedId).First(),
         whenNotifying = DateTime.Now
     });
     user.SaveChanges();
 }
        public ActionResult editHeadline(headlineView model, string id, HttpPostedFileBase headlineHeader)
        {
            var thistitle = model.title;
            if (User.Identity.IsAuthenticated == false)
            {
                ModelState.AddModelError("editHeadline", "You must be logged in to change this");
                return Redirect("/headlines/editHeadline/" + thistitle);
            }
            if (WebSecurity.CurrentUserId != (from headlines in user.headlines
                                              where headlines.title == id
                                              select headlines.adminId.UserId).FirstOrDefault())
            {
                ModelState.AddModelError("editHeadline", "You are not authenticated to make a change here, please contact"
                    + WebSecurity.CurrentUserName + "to gain access to the group");
                return Redirect("/headlines/editHeadline/" + thistitle);
            }

            using (var db = new UsersContext())
            {
                files.updateImage(headlineHeader, id, "HeadlineHeader");
                headlineView headlineToEdit = db.headlines.FirstOrDefault(m => m.title == id);
                headlineToEdit.title = thistitle;
                headlineToEdit.accessLevel = model.accessLevel;
                db.SaveChanges();
            }
            return Redirect("/headlines/editHeadline/" + thistitle);
        }
Пример #17
0
        public void registerUser(registerViewModel model, Boolean isExternal)
        {
            var secureSetting = "";
            if (model.isSecure) { secureSetting = model.secureString; }
            WebSecurity.CreateUserAndAccount(model.UserName, model.Password, model.status);
            WebSecurity.Login(model.UserName, model.Password);
            using (var db = new UsersContext())
            {
                userDefinition userSubmission = new userDefinition
                {
                    showOuter = true,
                    homePage = "/Member/memberDetails/",
                    activitiesPublic = model.activitiesPublic,
                    DOBPublic = model.DOBPublic,
                    followingPublic = model.followingPublic,
                    interestPublic = model.interestPublic,
                    usernameFK = (from userDefined in db.UserProfiles
                                  where userDefined.UserName == model.UserName
                                  select userDefined).FirstOrDefault(),
                };
                if(isExternal)
                {
                    userSubmission.useOnlineImg = model.useOnlineImg;
                    userSubmission.onlineUrl = model.onlineImg;
                    userSubmission.language = (from lang in db.languages
                                               where lang.Description == "English"
                                               select lang).First();
                }
                if (isExternal == false)
                {
                    var secQuestion = (from secq in db.securityQuestions
                                       where secq.questionID == model.securityQuestionID
                                       select secq).First();
                    userSubmission.language = (from lang in db.languages
                                               where lang.languageID == model.languageDefined
                                               select lang).First();
                    userSubmission.securityQuestionID = secQuestion;
                    userSubmission.secure = sec.GetMD5Hash(secureSetting);
                    userSubmission.emailAddress = model.emailAddress;
                    userSubmission.status = model.status;
                    userSubmission.recommendedBy = model.recommendedBy;
                    userSubmission.securityAnswer = model.securityAnswer;
                    userSubmission.personTypeID = (from ptype in db.personType
                                                   where ptype.Description == model.personType
                                                   select ptype).First();
                    userSubmission.useOnlineImg = false;
                }

                db.userDefinition.Add(userSubmission);

                db.SaveChanges();
                mem.imRegistering(false);
                var user = db.userDefinition.Where(u => u.emailAddress == model.emailAddress)
                    .OrderBy(u => u.ID).FirstOrDefault();

                db.highlightsComputedMessages.Add(
                    new highlightsComputedMessage
                    {
                        createdUserID = (from users in db.UserProfiles
                                         orderby users.UserId descending
                                         select users.UserId).First(),
                        sourceDefinition = model.UserName,
                        highlightID = (from highlights in db.highlightsPerType
                                       where highlights.highlightMethod == "personRegister"
                                       select highlights).First()
                    }
                );
                db.SaveChanges();

                memberServices memThis = new memberServices();
                var userIdDefined = (from idd in db.UserProfiles
                                     orderby idd.UserId descending
                                     select idd.UserId).First();
                getActivityForIntRank(model.personType, userIdDefined, model.UserName, model.styleSheetName);
            }
        }