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