예제 #1
0
        private async void btnAddUser_Click(object sender, EventArgs e)
        {
            try
            {
                string username = textUsername.Text;

                if (string.IsNullOrEmpty(username))
                {
                    MessageBox.Show("Invalid Username");
                    return;
                }
                if (username.Length > 100)
                {
                    MessageBox.Show("Invalid Username");
                    return;
                }

                ApplicationUserInputModel inputModel = new ApplicationUserInputModel
                {
                    UserName = username,
                };

                string inputModelJson = JsonConvert.SerializeObject(inputModel);

                await applicationUserService.InsertApplicationUserAsync(inputModelJson);

                MessageBox.Show("Successfully added new user");
            }
            catch (Exception ex)
            {
                MessageBox.Show(ex.ToString());
            }
        }
예제 #2
0
        public async Task <IActionResult> Put([FromBody] ApplicationUserInputModel model)
        {
            var user = await _userManager.GetUserAsync(HttpContext.User);

            if (user != null)
            {
                user.FirstName   = model.FirstName;
                user.MiddleName  = model.MiddleName;
                user.LastName    = model.LastName;
                user.UserName    = model.UserName;
                user.Gender      = model.Gender;
                user.PhoneNumber = model.PhoneNumber;
                user.Email       = model.Email;
                var result = await _userManager.UpdateAsync(user);

                if (result.Succeeded)
                {
                    return(Ok(user));
                }
                else
                {
                    return(BadRequest(result.Errors));
                }
            }
            else
            {
                return(NotFound());
            }
        }
예제 #3
0
        public void Models_ApplicationUserInputModel_Get_Set_Should_Pass()
        {
            // Arange
            var Student  = DataSourceBackend.Instance.StudentBackend.GetDefault();
            var userInfo = DataSourceBackend.Instance.IdentityBackend.FindUserByUserName(Student.Name);

            // Act
            var result = new ApplicationUserInputModel(userInfo)
            {
                Id      = "123",
                Role    = UserRoleEnum.StudentUser,
                Student = Student,
                State   = true
            };

            // Reset
            DataSourceBackend.Instance.Reset();

            // Assert
            Assert.IsNotNull(result, TestContext.TestName);
            Assert.AreEqual(result.Id, result.Id, TestContext.TestName);
            Assert.AreEqual(result.Role, result.Role, TestContext.TestName);
            Assert.AreEqual(result.Student, result.Student, TestContext.TestName);
            Assert.AreEqual(result.State, result.State, TestContext.TestName);
        }
예제 #4
0
        public async Task InsertApplicationUserAsync(string inputModelJson)
        {
            ApplicationUserInputModel inputModel = JsonConvert.DeserializeObject <ApplicationUserInputModel>(inputModelJson);

            string currentDate     = DateTime.Now.ToString("dd.MM.yyyy");
            string insertStatement = $"insert into application_user(is_del, username, created_on)values(0,'{inputModel.UserName}', '{currentDate}')";

            await CommandExecuter.ExecuteNonQuaryAsync(insertStatement);
        }
        public async Task <IActionResult> Edit(string id, [Bind("Id,FirstName,LastName,Email,Password,ConfirmPassword,IsApproved")] ApplicationUserInputModel input)
        {
            if (id != input.Id)
            {
                return(NotFound());
            }

            if (ModelState.IsValid)
            {
                var user = await _userManager.FindByIdAsync(input.Id);

                if (user.FirstName != input.FirstName)
                {
                    user.FirstName = input.FirstName;
                }

                if (user.LastName != input.LastName)
                {
                    user.LastName = input.LastName;
                }

                var approvedChanged = false;
                if (user.IsApproved != input.IsApproved)
                {
                    user.IsApproved = input.IsApproved;
                    approvedChanged = true;
                }

                var result = await _userManager.UpdateAsync(user);

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

                    if (approvedChanged)
                    {
                        if (input.IsApproved)
                        {
                            await _emailSender.SendEmailAsync(input.Email, "Account Activated",
                                                              $"Your account has been activated.");
                        }
                        else
                        {
                            await _emailSender.SendEmailAsync(input.Email, "Account Deactivated",
                                                              $"Your account has been deactivated, please contact Administrator.");
                        }
                    }

                    return(RedirectToAction(nameof(Index)));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }
            return(View(input));
        }
예제 #6
0
        public void Models_ApplicationUserInput_Instantiate_Should_Pass()
        {
            // Arange

            // Act
            var result = new ApplicationUserInputModel();

            // Reset
            DataSourceBackend.Instance.Reset();

            // Assert
            Assert.IsNotNull(result, TestContext.TestName);
        }
예제 #7
0
        public void Models_ApplicationUserInput_Invalid_User_Should_Fail()
        {
            // Arange
            var userInfo = DataSourceBackend.Instance.IdentityBackend.FindUserByUserName("bogus");

            // Act
            var result = new ApplicationUserInputModel(userInfo);

            // Reset
            DataSourceBackend.Instance.Reset();

            // Assert
            Assert.IsNull(result.Student, TestContext.TestName);
        }
예제 #8
0
        public async Task <ActionResult <ApplicationUserViewModel> > PostUser([FromBody] ApplicationUserInputModel userInputModel)
        {
            ApplicationUser user = _mapper.Map <ApplicationUser>(userInputModel);

            IdentityResult result = await _userManager.CreateAsync(user, userInputModel.Password);

            if (!result.Succeeded)
            {
                SetIdentityResultErrors(result);
                return(BadRequest(new ValidationProblemDetails(ModelState)
                {
                    Status = StatusCodes.Status400BadRequest
                }));
            }

            return(GenerateAuthenticateUser(user));
        }
예제 #9
0
        public void Models_ApplicationUserInputModel_Instantiate_Should_Pass()
        {
            // Arange
            //DataSourceBackend.Instance.StudentBackend.Index();
            var Student  = DataSourceBackend.Instance.StudentBackend.GetDefault();
            var userInfo = DataSourceBackend.Instance.IdentityBackend.FindUserByID(Student.Id);

            // Act
            var result = new ApplicationUserInputModel(userInfo);

            // Reset
            DataSourceBackend.Instance.Reset();

            // Assert
            Assert.IsNotNull(Student, TestContext.TestName);
            Assert.IsNotNull(userInfo, TestContext.TestName);
            Assert.IsNotNull(result, TestContext.TestName);
        }
예제 #10
0
        public ActionResult ToggleUser([Bind(Include =
                                                 "Id," +
                                                 "State," +
                                                 "Role," +
                                                 "")] ApplicationUserInputModel data)
        {
            if (!ModelState.IsValid)
            {
                // Send back for edit
                return(View(data));
            }

            if (data == null)
            {
                return(RedirectToAction("Error", "Home"));
            }

            if (string.IsNullOrEmpty(data.Id))
            {
                return(RedirectToAction("Error", "Home"));
            }

            if (data.Role == UserRoleEnum.Unknown)
            {
                return(RedirectToAction("Error", "Home"));
            }

            if (DataSourceBackend.Instance.IdentityBackend.UserHasClaimOfType(data.Id, data.Role))
            {
                DataSourceBackend.Instance.IdentityBackend.RemoveClaimFromUser(data.Id, data.Role.ToString());
            }
            else
            {
                DataSourceBackend.Instance.IdentityBackend.AddClaimToUser(data.Id, data.Role.ToString(), "True");
            }

            return(RedirectToAction("UserList", "Support"));
        }
예제 #11
0
        //GET support/togglestudent/userID
        public ActionResult ToggleUser(string id = null, string item = null)
        {
            var CurrentId = DataSourceBackend.Instance.IdentityBackend.GetCurrentStudentID(HttpContext);

            if (DataSourceBackend.Instance.IdentityBackend.BlockExecptForRole(CurrentId, UserRoleEnum.SupportUser))
            {
                return(RedirectToAction("Login", "Support"));
            }

            if (string.IsNullOrEmpty(id))
            {
                return(RedirectToAction("Index", "Home"));
            }

            if (string.IsNullOrEmpty(item))
            {
                return(RedirectToAction("Index", "Home"));
            }

            var myUserInfo = DataSourceBackend.Instance.IdentityBackend.FindUserByID(id);

            if (myUserInfo == null)
            {
                return(RedirectToAction("Index", "Home"));
            }

            var RoleEnum = (UserRoleEnum)Enum.Parse(typeof(UserRoleEnum), item, true);

            var myReturn = new ApplicationUserInputModel(myUserInfo)
            {
                Id    = myUserInfo.Id,
                Role  = RoleEnum,
                State = DataSourceBackend.Instance.IdentityBackend.UserHasClaimOfType(myUserInfo.Id, RoleEnum)
            };

            return(View(myReturn));
        }
        public async Task <IActionResult> Create([Bind("FirstName,LastName,Email,Password,ConfirmPassword")] ApplicationUserInputModel input)
        {
            if (ModelState.IsValid)
            {
                var user = new ApplicationUser {
                    FirstName = input.FirstName, LastName = input.LastName, UserName = input.Email, Email = input.Email, IsApproved = false, CreatedOn = DateTime.Now
                };
                var result = await _userManager.CreateAsync(user, input.Password);

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

                    var code = await _userManager.GenerateEmailConfirmationTokenAsync(user);

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

                    await _userManager.AddToRoleAsync(user, "Admin");

                    ModelState.AddModelError("AccountInactive", "Your Account is not activated yet. Please wait until administrator approves your account.");

                    return(RedirectToAction(nameof(Index)));
                }
                foreach (var error in result.Errors)
                {
                    ModelState.AddModelError(string.Empty, error.Description);
                }
            }
            return(View(input));
        }
예제 #13
0
        public async Task <ActionResult <ApplicationUserViewModel> > PostApplicationUser([FromBody] ApplicationUserInputModel applicationUser)
        {
            var user = new ApplicationUser
            {
                UserName = applicationUser.UserName,
                Email    = applicationUser.Email,
                Rol      = applicationUser.Rol
            };

            var result = await _userManager.CreateAsync(user, applicationUser.Password);

            if (!result.Succeeded)
            {
                ModelState.AddModelError("UsuarioYaTomado", "El usuario ya esta tomado po otra persona");
                return(Conflict(ModelState));
            }

            return(new ApplicationUserViewModel
            {
                UserName = user.UserName,
                Email = user.Email,
                Token = _tokenGenerator.GenerateToken(user.UserName, user.Rol),
                Rol = user.Rol
            });
        }