public LearningPlusNews EditNews(NewsCreateEditPostViewModel model, LearningPlusUser creator) { var news = this.GetById(model.Id).SingleOrDefault(); List <LearningPlusNewsTargetRole> targetRoles = AddTargetRolesToANews(model); news.Message = model.Message; news.Creator = creator; news.ExpiresOn = model.ExpiresOn; news.TargetRoles = targetRoles; this.newsRepo.SaveChangesAsync().GetAwaiter().GetResult(); return(news); }
public LearningPlusNews CreateNews(NewsCreateEditPostViewModel model, LearningPlusUser creator) { List <LearningPlusNewsTargetRole> targetRoles = AddTargetRolesToANews(model); var news = new LearningPlusNews { Message = model.Message, Creator = creator, ExpiresOn = model.ExpiresOn, TargetRoles = targetRoles, }; this.newsRepo.AddAsync(news).GetAwaiter().GetResult(); this.newsRepo.SaveChangesAsync().GetAwaiter().GetResult(); return(news); }
private static void CreateUsersAndRoles(UserManager <LearningPlusUser> userManager, RoleManager <IdentityRole> roleManager, LearningPlusDbContext db) { Task.Run(async() => { string[] usersAndRoles = { "Admin", "Teacher", "Parent", "Child" }; foreach (var role in usersAndRoles) { var adminRoleExists = await roleManager.RoleExistsAsync(role); if (!adminRoleExists) { await roleManager.CreateAsync(new IdentityRole { Name = role }); } } foreach (var username in usersAndRoles) { var user = await userManager.FindByNameAsync(username); if (user == null) { user = new LearningPlusUser { UserName = username, FirstName = $"First{username}", LastName = $"{username}LastName", Email = $"{username}@{username}world.som" }; await userManager.CreateAsync(user, "123456"); await userManager.AddToRoleAsync(user, username); } } var child = db.Users.FirstOrDefault(u => u.UserName == "Child"); var parent = db.Users.FirstOrDefault(u => u.UserName == "Parent"); parent.Children.Add(child); }).Wait(); }
public async Task <IActionResult> FacebookResponse(string returnUrl = "/") { ExternalLoginInfo info = await signInManager.GetExternalLoginInfoAsync(); if (info == null) { return(RedirectToAction(nameof(Login))); } var result = await signInManager.ExternalLoginSignInAsync(info.LoginProvider, info.ProviderKey, false); if (result.Succeeded) { return(Redirect(returnUrl)); } else { LearningPlusUser user = new LearningPlusUser { Email = info.Principal.FindFirst(ClaimTypes.Email).Value, UserName = info.Principal.FindFirst(ClaimTypes.Email).Value, FirstName = info.Principal.FindFirst(ClaimTypes.GivenName).Value, LastName = info.Principal.FindFirst(ClaimTypes.Name).Value, }; IdentityResult identResult = await userManager.CreateAsync(user); if (identResult.Succeeded) { identResult = await userManager.AddLoginAsync(user, info); if (identResult.Succeeded) { await signInManager.SignInAsync(user, false); return(Redirect(returnUrl)); } } return(RedirectToAction(nameof(Login))); } }
public async Task <IActionResult> Login(DoLoginViewModel model, string returnUrl) { if (ModelState.IsValid) { LearningPlusUser user = await userManager.FindByNameAsync(model.Username); if (user != null) { await signInManager.SignOutAsync(); Microsoft.AspNetCore.Identity.SignInResult result = await signInManager .PasswordSignInAsync(user, model.Password, model.RememberMe, false); if (result.Succeeded) { return(Redirect(returnUrl ?? "/")); } } ModelState.AddModelError(nameof(DoLoginViewModel.Username), "Invalid user or password"); } return(View(model)); }
public async Task <IActionResult> RegisterStudent(RegisterStudentViewModel model) { //TODO: Set Username to be only in latin chars //TODO: To implemrnt return URL var IsParentUserNameTacken = await this.userManager.FindByNameAsync(model.ParentUserName); if (IsParentUserNameTacken != null) { ModelState.AddModelError(nameof(RegisterStudentViewModel.ParentUserName), "Потребителското име е вече заето."); } var IsChaildUserNameTacken = await this.userManager.FindByNameAsync(model.ParentUserName); if (IsChaildUserNameTacken != null) { ModelState.AddModelError(nameof(RegisterStudentViewModel.ChildUserName), "Потребителското име е вече заето."); } if (ModelState.IsValid) { var child = new LearningPlusUser { FirstName = model.ChildFirstName, LastName = model.ChildLastName, PhoneNumber = model.ChildPhoneNumber, Email = model.ChildEmail, UserName = model.ChildUserName }; await this.userManager.CreateAsync(child, model.ChaildPassword); if (this.User.IsInRole("Teacher")) { await this.userManager.AddToRoleAsync(child, "Child"); } var parent = new LearningPlusUser { FirstName = model.ParentFirstName, LastName = model.ParentLastName, PhoneNumber = model.ParentPhoneNumber, Email = model.ParentEmail, UserName = model.ParentUserName }; parent.Children.Add(child); await this.userManager.CreateAsync(parent, model.ParentPassword); if (this.User.IsInRole("Teacher")) { await this.userManager.AddToRoleAsync(parent, "Parent"); return(Redirect("/")); } return(RedirectToAction("Login", "Users")); } return(this.View(model)); }