コード例 #1
0
        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);
        }
コード例 #2
0
        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);
        }
コード例 #3
0
        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();
        }
コード例 #4
0
        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)));
            }
        }
コード例 #5
0
        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));
        }
コード例 #6
0
        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));
        }