Esempio n. 1
0
        public override bool IsUserInRole(string username, string roleName)
        {
            using (iMAST_dbEntities db = new iMAST_dbEntities())
            {
                iMentorUser user = db.iMentorUsers.FirstOrDefault(u => u.UserName.Equals(username, StringComparison.CurrentCultureIgnoreCase) || u.Email.Equals(username, StringComparison.CurrentCultureIgnoreCase));

                iMentorUserRole userRole = db.iMentorUserRoles.FirstOrDefault(x => x.UserId == user.Id);
                iMentorRole     role     = db.iMentorRoles.FirstOrDefault(x => x.Id == userRole.RoleId);
                var             roles    = new string[] { role.RoleName };

                if (user != null)
                {
                    return(roles.Any(r => r.Equals(roleName, StringComparison.CurrentCultureIgnoreCase)));
                }
                else
                {
                    return(false);
                }
            }
        }
Esempio n. 2
0
        public async Task <ActionResult> ExternalLoginConfirmation(ExternalLoginConfirmationViewModel model, string returnUrl)
        {
            if (User.Identity.IsAuthenticated)
            {
                return(RedirectToAction("Index", "Manage"));
            }

            if (ModelState.IsValid)
            {
                // Get the information about the user from the external login provider
                var info = await AuthenticationManager.GetExternalLoginInfoAsync();

                if (info == null)
                {
                    return(View("ExternalLoginFailure"));
                }
                var user = new ApplicationUser {
                    UserName = model.Email, Email = model.Email
                };
                var result = await UserManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    //Create the iMentorUser entry
                    using (iMAST_dbEntities db = new iMAST_dbEntities())
                    {
                        bool userExists = false;

                        foreach (iMentorUser u in db.iMentorUsers.ToList())
                        {
                            if (u.Email.Equals(user.Email))
                            {
                                userExists = true;
                            }
                        }

                        //Create the user
                        if (!userExists)
                        {
                            var imUser = new iMentorUser();
                            imUser.UserName = user.UserName;
                            imUser.Email    = user.Email;
                            imUser.UrlId    = GetNewUrlId();

                            db.iMentorUsers.Add(imUser);
                            db.SaveChanges();


                            //Create the Role
                            var imUserRole = new iMentorUserRole();
                            imUserRole.UserId = imUser.Id;
                            imUserRole.RoleId = db.iMentorRoles.Where(x => x.RoleName.Equals("Read Only")).FirstOrDefault().Id; //Default role is "Read Only"

                            db.iMentorUserRoles.Add(imUserRole);
                            db.SaveChanges();
                        }
                    }

                    result = await UserManager.AddLoginAsync(user.Id, info.Login);

                    if (result.Succeeded)
                    {
                        await SignInManager.SignInAsync(user, isPersistent : false, rememberBrowser : false);

                        return(RedirectToAction("Index", "Home"));
                    }
                }
                AddErrors(result);
            }

            //ViewBag.ReturnUrl = returnUrl;

            //return View(model);
            return(RedirectToAction("Index", "Home"));
        }