示例#1
0
        // GET: UserModels
        public ActionResult Index()
        {
            UserBinder userBinder             = new UserBinder();
            ICollection <UserModel> userModel = userBinder.Bind(db.User.ToList());

            return(View(userModel));
        }
示例#2
0
        public ActionResult Registration([Bind(Include = "Password,RePassword,UserName")] UserModel userModel)
        {
            if (ModelState.IsValid)
            {
                UserModel dbUser = userModel.GetUserByUsername(userModel.UserName);
                if (dbUser.UserName != null)
                {
                    return(HttpNotFound("Username is already used"));
                }

                if (!String.Equals(userModel.Password, userModel.RePassword))
                {
                    return(HttpNotFound("Passwords are not same"));
                }

                Session["UserName"] = dbUser.UserName;

                UserBinder userBinder = new UserBinder();
                userModel.UserTypeId = UserTypeCodes.User;
                User user = userBinder.Bind(userModel);
                db.User.Add(user);
                db.SaveChanges();

                return(RedirectToAction("Index", "Home"));
            }

            return(View(userModel));
        }
        public void ShouldBindUser()
        {
            // Arrange
            string email = "*****@*****.**";
            string password = "******";

            Mock<IEncryptor> encryptor = new Mock<IEncryptor>();
            encryptor.Setup(x => x.Encrypt(It.IsAny<string>())).Returns<string>(s => s);

            IUser user = MockUsers.CreateMockUser(MockUsers.CreateMockUserCredentials(email, password));
            Mock<IUserRepository> repository = new Mock<IUserRepository>();
            repository.Setup(r => r.CreateUser(It.IsAny<string>(), It.IsAny<string>(), It.IsAny<IUserCredentials>())).Returns(user);

            UserBinder binder = new UserBinder(repository.Object, encryptor.Object);

            ModelBindingContext ctx = BinderHelpers.CreateModelBindingContext("user", new Dictionary<string, string> {
                { "Email", email },
                { "Password", password }
            });

            // Act
            IUser u = binder.BindModel(null, ctx) as IUser;

            // Assert
            Assert.AreNotEqual(null, u);
            Assert.AreEqual(true, ctx.ModelState.IsValid);
            Assert.AreEqual(email, u.Credentials.Email);
            Assert.AreEqual(password, u.Credentials.Password);

            encryptor.Verify(x => x.Encrypt(password));
        }
示例#4
0
        public IActionResult Login([FromBody] UserBinder userParameters)
        {
            var user = _userService.Authenticate(userParameters.Email, userParameters.Password);

            if (user == null)
            {
                return(BadRequest(new { message = "Error: Incorrect password or email" }));
            }

            var tokenHandler     = new JwtSecurityTokenHandler();
            var key              = Encoding.UTF8.GetBytes(_appSettings.Secret);
            var tokenDescription = new SecurityTokenDescriptor
            {
                Subject = new ClaimsIdentity(new Claim[] {
                    new Claim(ClaimTypes.Name, user.Id.ToString())
                }),
                Expires            = DateTime.UtcNow.AddDays(30),
                SigningCredentials = new SigningCredentials(new SymmetricSecurityKey(key), SecurityAlgorithms.HmacSha256Signature)
            };
            var token       = tokenHandler.CreateToken(tokenDescription);
            var tokenString = tokenHandler.WriteToken(token);

            return(Ok(new {
                user.Id,
                user.Email,
                user.FirstName,
                user.LastName,
                Token = tokenString
            }));
        }
示例#5
0
        public UserModel GetUserByUsername(string userName)
        {
            User       dbUser    = db.User.Where(u => u.UserName == userName).FirstOrDefault();
            UserBinder binder    = new UserBinder();
            UserModel  userModel = binder.Bind(dbUser);

            return(userModel);
        }
示例#6
0
        public ActionResult Create([Bind(Include = "Id,Password,UserName,UserTypeId")] UserModel userModel)
        {
            if (ModelState.IsValid)
            {
                UserBinder userBinder = new UserBinder();
                User       user       = userBinder.Bind(userModel);
                db.User.Add(user);
                db.SaveChanges();
                return(RedirectToAction("Index"));
            }

            return(View(userModel));
        }
示例#7
0
        public IActionResult Register([FromBody] UserBinder userParameters)
        {
            var user = _mapper.Map <User>(userParameters);

            try {
                var subject         = "Register in Survey App";
                var first_last_name = $"{userParameters.FirstName} {userParameters.LastName}";
                var text            = $"Hello {userParameters.FirstName} {userParameters.LastName}, Thank you for register in Survey App. Login and go to Survey List to look at your Surveys.";

                new EmailClient().SendSMTPEmails(userParameters.Email, subject, text, first_last_name);

                _userService.Create(user, userParameters.Password);

                return(Ok(new { message = "Your account has been created!" }));
            } catch (AppException exception) {
                return(BadRequest(new { message = exception.Message }));
            }
        }