Beispiel #1
0
        public async Task <ActionResult <string> > RegisterNewUser([FromBody] RegisterUserViewModel registerUser)
        {
            if (ModelState.IsValid)
            {
                var user = new LMSUser {
                    UserName = registerUser.Email, Email = registerUser.Email, FirstName = registerUser.FirstName, LastName = registerUser.LastName
                };
                var Role   = registerUser.Role;
                var result = await _userManager.CreateAsync(user, registerUser.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    var ok = await _userManager.AddToRoleAsync(user, Role);

                    if (!ok.Succeeded)
                    {
                        throw new Exception(string.Join("\n", ok.Errors));
                    }

                    /*  var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                     * var callbackUrl = Url.Page(
                     *    "/Account/ConfirmEmail",
                     *    pageHandler: null,
                     *    values: new { userId = user.Id, code = code },
                     *    protocol: Request.Scheme);
                     *
                     * await _emailSender.SendEmailAsync(registerUser.Email, "Confirm your email",
                     *    $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");
                     */
                    // teacher makes users so no log in.
                    // await _signInManager.SignInAsync(user, isPersistent: false);

                    var res = Json(new
                    {
                        Name = user.Id
                    });



                    return(Created("", res));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(StatusCode(500, ModelState));
        }
Beispiel #2
0
        private async Task LoadAsync(LMSUser user)
        {
            var email = await _userManager.GetEmailAsync(user);

            Email = email;

            Input = new InputModel
            {
                NewEmail = email,
            };

            IsEmailConfirmed = await _userManager.IsEmailConfirmedAsync(user);
        }
Beispiel #3
0
        private async Task LoadAsync(LMSUser user)
        {
            var userName = await _userManager.GetUserNameAsync(user);

            var phoneNumber = await _userManager.GetPhoneNumberAsync(user);

            Username = userName;

            Input = new InputModel
            {
                PhoneNumber = phoneNumber
            };
        }
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            if (ModelState.IsValid)
            {
                var user = new LMSUser {
                    UserName = Input.Email, Email = Input.Email, FirstName = Input.FirstName, LastName = Input.LastName
                };
                var Role   = Input.Role;
                var result = await _userManager.CreateAsync(user, Input.Password);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    var ok = await _userManager.AddToRoleAsync(user, Role);

                    if (!ok.Succeeded)
                    {
                        throw new Exception(string.Join("\n", ok.Errors));
                    }
                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { userId = user.Id, code = code },
                        protocol: Request.Scheme);

                    await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                      $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                    // teacher makes users so no log in.
                    // await _signInManager.SignInAsync(user, isPersistent: false);
                    return(LocalRedirect(returnUrl));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }
        private async Task LoadSharedKeyAndQrCodeUriAsync(LMSUser user)
        {
            // Load the authenticator key & QR code URI to display on the form
            var unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);

            if (string.IsNullOrEmpty(unformattedKey))
            {
                await _userManager.ResetAuthenticatorKeyAsync(user);

                unformattedKey = await _userManager.GetAuthenticatorKeyAsync(user);
            }

            SharedKey = FormatKey(unformattedKey);

            var email = await _userManager.GetEmailAsync(user);

            AuthenticatorUri = GenerateQrCodeUri(email, unformattedKey);
        }
Beispiel #6
0
        private static async Task NewUser(string adminPW, UserManager <LMSUser> userManager, string email)
        {
            var fake = new Faker();

            var user = new LMSUser
            {
                UserName  = email,
                Email     = email,
                FirstName = fake.Name.FirstName(),
                LastName  = fake.Name.LastName()
            };

            var result = await userManager.CreateAsync(user, adminPW);

            if (!result.Succeeded)
            {
                throw new Exception(string.Join("\n", result.Errors));
            }
        }
        public async Task <IActionResult> OnPostConfirmationAsync(string returnUrl = null)
        {
            returnUrl = returnUrl ?? Url.Content("~/");
            // Get the information about the user from the external login provider
            var info = await _signInManager.GetExternalLoginInfoAsync();

            if (info == null)
            {
                ErrorMessage = "Error loading external login information during confirmation.";
                return(RedirectToPage("./Login", new { ReturnUrl = returnUrl }));
            }

            if (ModelState.IsValid)
            {
                var user = new LMSUser {
                    UserName = Input.Email, Email = Input.Email
                };
                var result = await _userManager.CreateAsync(user);

                if (result.Succeeded)
                {
                    result = await _userManager.AddLoginAsync(user, info);

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

                        _logger.LogInformation("User created an account using {Name} provider.", info.LoginProvider);
                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            LoginProvider = info.LoginProvider;
            ReturnUrl     = returnUrl;
            return(Page());
        }
Beispiel #8
0
        public async Task <ActionResult <string> > UpdateUser([FromBody] ManageUserViewModel registerUser)
        {
            if (ModelState.IsValid)
            {
                var user2 = await _userManager.FindByNameAsync(User.Identity.Name);

                var user = new LMSUser {
                    UserName = registerUser.Email, Email = registerUser.Email, FirstName = registerUser.FirstName, LastName = registerUser.LastName
                };
                // var Role = registerUser.Role;
                user2.FirstName = registerUser.FirstName;
                user2.LastName  = registerUser.LastName;
                if (User.Identity.Name != registerUser.Email)
                {
                    throw new AccessViolationException("User tryed to update other user");
                }
                if (registerUser.Password != "")
                {// then try to update password
                    var changePasswordResult = await _userManager.ChangePasswordAsync(user2, registerUser.Oldpassword, registerUser.Password);

                    if (!changePasswordResult.Succeeded)
                    {
                        _logger.LogInformation("Failed to update Password by user");
                        foreach (var error in changePasswordResult.Errors)
                        {
                            ModelState.AddModelError(string.Empty, error.Description);
                        }
                    }
                    else
                    {
                        _logger.LogInformation("Password updated by user");
                    }
                }
                var result = await _userManager.UpdateAsync(user2);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User updated by user");

                    // var roles = await _userManager.GetRolesAsync(user2);

                    /*if (!roles.Contains(Role))
                     * {
                     *  _logger.LogInformation("User role updated by user");
                     *  var ok2 = await _userManager.RemoveFromRoleAsync(user2, roles[0]);
                     *  if (!ok2.Succeeded)
                     *  {
                     *      ModelState.AddModelError(string.Empty, string.Join("\n", ok2.Errors));
                     *  }
                     *  var ok = await _userManager.AddToRoleAsync(user2, Role);
                     *  if (!ok.Succeeded)
                     *  {
                     *      ModelState.AddModelError(string.Empty, string.Join("\n", ok.Errors));
                     *  }
                     * }*/
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }

                if (ModelState.Count > 0)
                { // errors
                    return(StatusCode(500, ModelState));
                }
                var res = Json(new
                {
                    status = true
                });



                return(Ok(res));
            }

            return(StatusCode(500, ModelState));
        }
Beispiel #9
0
        public async Task <ActionResult <string> > UpdateUserAdmin([FromBody] ManageUserViewModel registerUser)
        {
            if (ModelState.IsValid)
            {
                var user = new LMSUser {
                    UserName = registerUser.Email, Email = registerUser.Email, FirstName = registerUser.FirstName, LastName = registerUser.LastName
                };
                var Role  = registerUser.Role;
                var user2 = await _userManager.FindByIdAsync(registerUser.Id);

                user2.FirstName = registerUser.FirstName;
                user2.LastName  = registerUser.LastName;

                var result = await _userManager.UpdateAsync(user2);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User updated by admin");

                    var roles = await _userManager.GetRolesAsync(user2);

                    if (!roles.Contains(Role))
                    {
                        _logger.LogInformation("User role updated by Admin");
                        var ok2 = await _userManager.RemoveFromRoleAsync(user2, roles[0]);

                        if (!ok2.Succeeded)
                        {
                            throw new Exception(string.Join("\n", ok2.Errors));
                        }
                        var ok = await _userManager.AddToRoleAsync(user2, Role);

                        if (!ok.Succeeded)
                        {
                            throw new Exception(string.Join("\n", ok.Errors));
                        }
                    }

                    /*  var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);
                     * var callbackUrl = Url.Page(
                     *    "/Account/ConfirmEmail",
                     *    pageHandler: null,
                     *    values: new { userId = user.Id, code = code },
                     *    protocol: Request.Scheme);
                     *
                     * await _emailSender.SendEmailAsync(registerUser.Email, "Confirm your email",
                     *    $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");
                     */
                    // teacher makes users so no log in.
                    // await _signInManager.SignInAsync(user, isPersistent: false);

                    var res = Json(new
                    {
                        status = true
                    });



                    return(Ok(res));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(StatusCode(500, ModelState));
        }
Beispiel #10
0
        /// <summary>
        /// Seeds users and testdata if not already in db
        /// </summary>
        /// <param name="serviceProvider">serviceProvider</param>
        /// <param name="admins">Admin users</param>
        /// <param name="users">User Users</param>
        /// <returns>Void</returns>
        public static async Task Initialize(IServiceProvider serviceProvider, UserData[] admins, UserData[] users)
        {
            using (var context = new ApplicationDbContext(
                       serviceProvider.GetRequiredService <DbContextOptions <ApplicationDbContext> >()))
            { // init testusers
                var userManager = serviceProvider.GetService <UserManager <LMSUser> >();
                var roleManager = serviceProvider.GetRequiredService <RoleManager <IdentityRole> >();

                if (roleManager == null || userManager == null)
                {
                    throw new Exception("roleManager or userManager is null");
                }

                var roleNames = new[] { ConstDefine.R_TEACHER, ConstDefine.R_STUDENT };
                foreach (var name in roleNames)
                { // init roles
                    if (await roleManager.RoleExistsAsync(name))
                    {
                        continue;
                    }
                    var role = new IdentityRole {
                        Name = name
                    };
                    var result = await roleManager.CreateAsync(role);

                    if (!result.Succeeded)
                    {
                        throw new Exception(string.Join("\n", result.Errors));
                    }
                }
                // teachers
                var Temails = admins.Select(u => u.UserName);
                foreach (var email in Temails)
                {
                    if ((await userManager.FindByEmailAsync(email)) != null)
                    {
                        continue;
                    }
                    var user = new LMSUser {
                        UserName = email, Email = email
                    };
                    var result = await userManager.CreateAsync(user, admins.Where(u => u.UserName == email).Select(u => u.PassWord).FirstOrDefault());

                    if (!result.Succeeded)
                    {
                        throw new Exception(string.Join("\n", result.Errors));
                    }
                    var adminUser = await userManager.FindByNameAsync(email);

                    if ((await userManager.GetRolesAsync(adminUser)).Count() == 0)
                    {
                        var ok = await userManager.AddToRoleAsync(adminUser, ConstDefine.R_TEACHER);

                        if (!ok.Succeeded)
                        {
                            throw new Exception(string.Join("\n", ok.Errors));
                        }
                    }
                }

                var Semails = users.Select(u => u.UserName);
                foreach (var email in Semails)
                {
                    if ((await userManager.FindByEmailAsync(email)) != null)
                    {
                        continue;
                    }
                    var user = new LMSUser {
                        UserName = email, Email = email
                    };
                    var result = await userManager.CreateAsync(user, users.Where(u => u.UserName == email).Select(u => u.PassWord).FirstOrDefault());

                    if (!result.Succeeded)
                    {
                        throw new Exception(string.Join("\n", result.Errors));
                    }
                    var adminUser = await userManager.FindByNameAsync(email);

                    if ((await userManager.GetRolesAsync(adminUser)).Count() == 0)
                    {
                        var ok = await userManager.AddToRoleAsync(adminUser, ConstDefine.R_STUDENT);

                        if (!ok.Succeeded)
                        {
                            throw new Exception(string.Join("\n", ok.Errors));
                        }
                    }
                }

                if (context.Courses.Count() == 0)   //0 men inte null.
                {
                    if (context.Courses.FirstOrDefault(c => c.Name == "NA18") == null)
                    {
                        // add a course
                        await context.Courses.AddAsync(new Course { Name = "NA18", Description = "Kurs i .net core och C#", StartDate = DateTime.Parse("2018-11-26 09:00:00") });

                        await context.SaveChangesAsync();
                    }
                    var courseid = context.Courses.FirstOrDefault(c => c.Name == "NA18")?.Id;

                    if (context.Modules.FirstOrDefault(u => u.CourseId == courseid && u.Name == "C#" && u.Description == "Programmering i C#") == null)
                    {
                        await context.Modules.AddAsync(new Module { Name = "C#", Description = "Programmering i C#", StartDate = DateTime.Parse("2018-11-26 09:00:00"), EndDate = DateTime.Parse("2018-12-07 17:00:00"), CourseId = courseid.Value });

                        await context.SaveChangesAsync();
                    }
                    var moduleid = context.Modules.FirstOrDefault(u => u.CourseId == courseid && u.Name == "C#" && u.Description == "Programmering i C#")?.Id;


                    if (context.LMSActivity.FirstOrDefault(a => a.ModuleId == moduleid) == null)
                    {
                        await context.LMSActivity.AddRangeAsync(new List <LMSActivity>
                        {
                            new LMSActivity {
                                Name = "EL1", Description = "Intro + E-L 1.1, 1.2", ActivityTypeId = 1, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-11-26 09:00:00"), EndDate = DateTime.Parse("2018-11-26 17:00:00")
                            },
                            new LMSActivity {
                                Name = "EL2", Description = "E-L 1.3", ActivityTypeId = 1, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-11-27 09:00:00"), EndDate = DateTime.Parse("2018-11-27 12:00:00")
                            },
                            new LMSActivity {
                                Name = "EL3", Description = "E-L 1.4 + 1.5", ActivityTypeId = 1, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-11-27 13:00:00"), EndDate = DateTime.Parse("2018-11-27 17:00:00")
                            },
                            new LMSActivity {
                                Name = "FR1", Description = "Frl C# Intro", ActivityTypeId = 2, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-11-28 09:00:00"), EndDate = DateTime.Parse("2018-11-28 17:00:00")
                            },
                            new LMSActivity {
                                Name = "OV2", Description = "Övning 2", ActivityTypeId = 3, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-11-29 09:00:00"), EndDate = DateTime.Parse("2018-11-29 17:00:00")
                            },
                            new LMSActivity {
                                Name = "FR2", Description = "Frl C# Grund", ActivityTypeId = 2, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-11-30 09:00:00"), EndDate = DateTime.Parse("2018-11-30 17:00:00")
                            },

                            new LMSActivity {
                                Name = "EL4", Description = "E-L 1.6 + 1.7", ActivityTypeId = 1, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-03 09:00:00"), EndDate = DateTime.Parse("2018-12-03 12:00:00")
                            },
                            new LMSActivity {
                                Name = "EL5", Description = "E-L 1.8", ActivityTypeId = 1, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-03 13:00:00"), EndDate = DateTime.Parse("2018-12-03 17:00:00")
                            },
                            new LMSActivity {
                                Name = "FR2", Description = "FRL OOP", ActivityTypeId = 2, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-04 09:00:00"), EndDate = DateTime.Parse("2018-12-04 17:00:00")
                            },
                            new LMSActivity {
                                Name = "OV3", Description = "Övning 3", ActivityTypeId = 3, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-05 09:00:00"), EndDate = DateTime.Parse("2018-12-05 17:00:00")
                            },
                            new LMSActivity {
                                Name = "FR3", Description = "FRL OOP 2", ActivityTypeId = 2, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-06 09:00:00"), EndDate = DateTime.Parse("2018-12-06 17:00:00")
                            },
                            new LMSActivity {
                                Name = "OV3", Description = "Övning 3", ActivityTypeId = 3, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-07 09:00:00"), EndDate = DateTime.Parse("2018-12-07 17:00:00")
                            },
                        });
                    }

                    if (context.Modules.FirstOrDefault(u => u.CourseId == courseid && u.Name == "C#" && u.Description == "C#") == null)
                    {
                        await context.Modules.AddAsync(new Module { Name = "C#", Description = "C#", StartDate = DateTime.Parse("2018-12-10 09:00:00"), EndDate = DateTime.Parse("2018-12-14 17:00:00"), CourseId = courseid.Value });

                        await context.SaveChangesAsync();
                    }

                    moduleid = context.Modules.FirstOrDefault(u => u.CourseId == courseid && u.Name == "C#" && u.Description == "C#")?.Id;

                    if (context.LMSActivity.FirstOrDefault(a => a.ModuleId == moduleid) == null)
                    {
                        await context.LMSActivity.AddRangeAsync(new List <LMSActivity>
                        {
                            new LMSActivity {
                                Name = "EL6", Description = "E-L 2.1 - 2.4", ActivityTypeId = 1, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-10 09:00:00"), EndDate = DateTime.Parse("2018-12-10 12:00:00")
                            },
                            new LMSActivity {
                                Name = "OV4", Description = "Övning 4", ActivityTypeId = 3, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-10 13:00:00"), EndDate = DateTime.Parse("2018-12-10 17:00:00")
                            },
                            new LMSActivity {
                                Name = "FR4", Description = "FRl Generics", ActivityTypeId = 2, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-11 09:00:00"), EndDate = DateTime.Parse("2018-12-11 17:00:00")
                            },
                            new LMSActivity {
                                Name = "EL7", Description = "E-L 2.5 – 2.6 ", ActivityTypeId = 1, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-12 09:00:00"), EndDate = DateTime.Parse("2018-12-12 12:00:00")
                            },
                            new LMSActivity {
                                Name = "OV4", Description = "Övning 4", ActivityTypeId = 3, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-12 13:00:00"), EndDate = DateTime.Parse("2018-12-12 17:00:00")
                            },
                            new LMSActivity {
                                Name = "FR4", Description = "FRL Generics", ActivityTypeId = 2, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-13 09:00:00"), EndDate = DateTime.Parse("2018-12-13 12:00:00")
                            },
                            new LMSActivity {
                                Name = "FR5", Description = "FRL LINQ", ActivityTypeId = 2, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-13 13:00:00"), EndDate = DateTime.Parse("2018-12-13 17:00:00")
                            },
                            new LMSActivity {
                                Name = "EL8", Description = "E-L 2.7 – 2.9", ActivityTypeId = 1, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-14 09:00:00"), EndDate = DateTime.Parse("2018-12-14 12:00:00")
                            },
                            new LMSActivity {
                                Name = "OV4", Description = "Övning 4", ActivityTypeId = 3, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-14 13:00:00"), EndDate = DateTime.Parse("2018-12-14 17:00:00")
                            },
                        });
                    }

                    if (context.Modules.FirstOrDefault(u => u.CourseId == courseid && u.Name == "C#" && u.Description == "Testning") == null)
                    {
                        await context.Modules.AddAsync(new Module { Name = "C#", Description = "Testning", StartDate = DateTime.Parse("2018-12-17 09:00:00"), EndDate = DateTime.Parse("2018-12-18 17:00:00"), CourseId = courseid.Value });

                        await context.SaveChangesAsync();
                    }

                    moduleid = context.Modules.FirstOrDefault(u => u.CourseId == courseid && u.Name == "C#" && u.Description == "Testning")?.Id;

                    if (context.LMSActivity.FirstOrDefault(a => a.ModuleId == moduleid) == null)
                    {
                        await context.LMSActivity.AddRangeAsync(new List <LMSActivity>
                        {
                            new LMSActivity {
                                Name = "EL9", Description = "Unit Test E-L Test ", ActivityTypeId = 1, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-17 09:00:00"), EndDate = DateTime.Parse("2018-12-17 17:00:00")
                            },
                            new LMSActivity {
                                Name = "FR6", Description = "FRL/Ariktektur", ActivityTypeId = 2, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-18 09:00:00"), EndDate = DateTime.Parse("2018-12-18 12:00:00")
                            },
                            new LMSActivity {
                                Name = "FR7", Description = "FRL/Test", ActivityTypeId = 2, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-18 13:00:00"), EndDate = DateTime.Parse("2018-12-18 17:00:00")
                            },
                        });
                    }

                    if (context.Modules.FirstOrDefault(u => u.CourseId == courseid && u.Name == "C#" && u.Description == "Garage 1.0") == null)
                    {
                        await context.Modules.AddAsync(new Module { Name = "C#", Description = "Garage 1.0", StartDate = DateTime.Parse("2018-12-19 09:00:00"), EndDate = DateTime.Parse("2019-01-02 17:00:00"), CourseId = courseid.Value });

                        await context.SaveChangesAsync();
                    }
                    moduleid = context.Modules.FirstOrDefault(u => u.CourseId == courseid && u.Name == "C#" && u.Description == "Garage 1.0")?.Id;

                    if (context.LMSActivity.FirstOrDefault(a => a.ModuleId == moduleid) == null)
                    {
                        await context.LMSActivity.AddRangeAsync(new List <LMSActivity>
                        {
                            new LMSActivity {
                                Name = "OVG1", Description = "Övning Garage 1.0", ActivityTypeId = 3, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-19 09:00:00"), EndDate = DateTime.Parse("2018-12-28 12:00:00")
                            },
                            new LMSActivity {
                                Name = "AN1", Description = "Redovisning", ActivityTypeId = 5, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2018-12-28 13:00:00"), EndDate = DateTime.Parse("2018-12-28 17:00:00")
                            },
                            new LMSActivity {
                                Name = "AN1", Description = "Redovisning", ActivityTypeId = 5, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2019-01-02 09:00:00"), EndDate = DateTime.Parse("2019-01-02 12:00:00")
                            },
                            new LMSActivity {
                                Name = "AN2", Description = "Kodgenomgång", ActivityTypeId = 5, ModuleId = moduleid.Value, StartDate = DateTime.Parse("2019-01-02 13:00:00"), EndDate = DateTime.Parse("2019-01-02 17:00:00")
                            },
                        });
                    }



                    // Add student to course
                    var students = await userManager.GetUsersInRoleAsync(ConstDefine.R_STUDENT);

                    foreach (var student in students)
                    {
                        if (context.CourseUsers.FirstOrDefault(cu => cu.LMSUserId == student.Id) == null)
                        {
                            await context.CourseUsers.AddAsync(
                                new CourseUser { CourseId = courseid.Value, LMSUserId = student.Id });
                        }
                    }



                    await context.SaveChangesAsync();
                }
            }
        }
Beispiel #11
0
        public async Task <IActionResult> OnPostAsync(string returnUrl = null)
        {
            returnUrl      = returnUrl ?? Url.Content("~/");
            ExternalLogins = (await _signInManager.GetExternalAuthenticationSchemesAsync()).ToList();
            if (ModelState.IsValid)
            {
                var user = new LMSUser {
                    UserName = Input.Email, Email = Input.Email
                };
                //var result = await _userManager.CreateAsync(user, Input.Password);

                // Use the adminPW as the default password when creating new users
                // TODO: Having a default password is a temp solution and should be fixed
                var defaultPassword = _config["KEY"];
                var result          = await _userManager.CreateAsync(user, defaultPassword);

                if (result.Succeeded)
                {
                    _logger.LogInformation("User created a new account with password.");

                    // Add user to role
                    var userRole = await _userManager.AddToRoleAsync(user, Input.Role);

                    if (!userRole.Succeeded)
                    {
                        throw new Exception(string.Join("\n", userRole.Errors));
                    }

                    // Add user to course
                    var userCourse = new LMSUserCourse
                    {
                        CourseId  = Input.CourseId,
                        LMSUserId = user.Id
                    };
                    _context.Add(userCourse);
                    _context.SaveChanges();

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

                    code = WebEncoders.Base64UrlEncode(Encoding.UTF8.GetBytes(code));
                    var callbackUrl = Url.Page(
                        "/Account/ConfirmEmail",
                        pageHandler: null,
                        values: new { area = "Identity", userId = user.Id, code = code },
                        protocol: Request.Scheme);

                    await _emailSender.SendEmailAsync(Input.Email, "Confirm your email",
                                                      $"Please confirm your account by <a href='{HtmlEncoder.Default.Encode(callbackUrl)}'>clicking here</a>.");

                    if (_userManager.Options.SignIn.RequireConfirmedAccount)
                    {
                        return(RedirectToPage("RegisterConfirmation", new { email = Input.Email }));
                    }
                    else
                    {
                        //await _signInManager.SignInAsync(user, isPersistent: false);
                        return(LocalRedirect(returnUrl));
                    }
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }

            // If we got this far, something failed, redisplay form
            return(Page());
        }