예제 #1
0
        private string JwtTokenGenerator(UserViewmodel model)
        {
            // Site key should go in web.config file, but I put it here to be expedient.
            var secret      = "ergwe98srg6KJG875jgjyrtyfderu65764uyJMHKOUKF";
            var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));
            var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha512Signature);

            var json      = JsonConvert.SerializeObject(model);
            var jsonBytes = Encoding.ASCII.GetBytes(json);
            var user64    = Convert.ToBase64String(jsonBytes);
            var claims    = new List <Claim> {
                new Claim(ClaimTypes.UserData, user64)
            };

            var descriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(7),
                SigningCredentials = credentials
            };
            var tokenHandler = new JwtSecurityTokenHandler();
            var token        = tokenHandler.CreateToken(descriptor);

            return(tokenHandler.WriteToken(token));
        }
예제 #2
0
        public ActionResult getuserdetails()
        {
            HttpCookie authCookie            = Request.Cookies[FormsAuthentication.FormsCookieName];
            FormsAuthenticationTicket ticket = FormsAuthentication.Decrypt(authCookie.Value);
            var username = ticket.UserData;

            UserViewmodel new_user = new UserViewmodel

            {
                email    = username,
                LastName = (from users in _db.users
                            where users.email == username
                            select users.LASTName).First(),
                FirstName = (from users in _db.users
                             where users.email == username
                             select users.FIRSTName).First(),
                Role = (from users in _db.users
                        where users.email == username
                        select users.role).First(),
            };

            string json = JsonConvert.SerializeObject(new_user);



            return(Json(json));
        }
예제 #3
0
        private string JwtTokenGenerator(UserViewmodel model)
        {
            var secret      = _config.GetSection("AppSettings:Key").Value;
            var securityKey = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));
            var credentials = new SigningCredentials(securityKey, SecurityAlgorithms.HmacSha512Signature);

            // 1. Convert model to json.
            var json = JsonSerializer.Serialize(model);
            // 2. Get byte array from json.
            var jsonBytes = Encoding.ASCII.GetBytes(json);
            // 3. Convert json byte array to base64 text.
            var user64 = Convert.ToBase64String(jsonBytes);
            // 4. Add base64 text to claims.
            var claims = new List <Claim> {
                new Claim(ClaimTypes.UserData, user64)
            };

            var descriptor = new SecurityTokenDescriptor
            {
                Subject            = new ClaimsIdentity(claims),
                Expires            = DateTime.Now.AddDays(7),
                SigningCredentials = credentials
            };
            var tokenHandler = new JwtSecurityTokenHandler();
            var token        = tokenHandler.CreateToken(descriptor);

            return(tokenHandler.WriteToken(token));
        }
예제 #4
0
        public async Task <IActionResult> UserList(string roleName, string txtTitle, int itemPage = 1)
        {
            roleName = roleName ?? "All";
            var usersOfRole = roleName != "All"
                            ? await userManager.GetUsersInRoleAsync(roleName)
                            : await userManager.Users.ToListAsync();

            txtTitle = txtTitle == null ? "" : txtTitle.ToUpper();
            UserViewmodel userList = new UserViewmodel
            {
                AppUsers = usersOfRole
                           .Where(r => r.UserName.ToUpper().Contains(txtTitle))
                           .OrderBy(u => u.UserName)
                           .Skip((itemPage - 1) * PageSize)
                           .Take(PageSize),
                Roles = roleManager.Roles
                        .OrderByDescending(r => r.Name)
                        .ToList(),
                PagingInfo = new PagingInfo
                {
                    CurrentPage  = itemPage,
                    ItemsPerPage = PageSize,
                    TotalItems   = userManager.Users.Count()
                }
            };

            foreach (var appUser in userList.AppUsers)
            {
                appUser.BusinessCount = repository.Businesses.Count(c => c.AppUser_Id == appUser.Id);
            }

            return(View(userList));
        }
예제 #5
0
        public IActionResult GetUserHistoryById(UserViewmodel userViewmodel)
        {
            var reports = _reportService.GetReportsByUserId(userViewmodel.Id).ToArray();

            var userHistoryViewmodel = Mapper.ModelToViewModelMapping.UserHistoryViewmodel(userViewmodel, reports);

            return(Ok(userHistoryViewmodel));
        }
 public bool CheckPassword(User user, UserViewmodel userViewmodel, HashPassword _hashPassword)
 {
     if (_hashPassword.Verify(userViewmodel.Password, user.Password))
     {
         return(true);
     }
     return(false);
 }
예제 #7
0
        public void Initialize()
        {
            _user = DataSupplier.DataSupplier.CreateUserViewmodels("Password").First();

            _loginFacadeMock = new Mock <ILoginFacade>();
            _loginFacadeMock.Setup(x => x.Validate(It.IsAny <string>(), It.IsAny <string>())).Returns(Task.FromResult(_user));

            _sut = new LoginController(_loginFacadeMock.Object);
        }
예제 #8
0
        public void Initialize()
        {
            _user = DataSupplier.DataSupplier.CreateUserViewmodels("Password").First();

            _registerFacadeMock = new Mock <IRegisterFacade>();
            _registerFacadeMock.Setup(x => x.Register(It.IsAny <UserViewmodel>(), It.IsAny <string>())).Returns(Task.FromResult(IdentityResult.Success));

            _sut = new RegisterController(_registerFacadeMock.Object);
        }
예제 #9
0
 public UserHistoryViewmodel UserHistoryViewmodel(UserViewmodel userViewmodel, Report[] reports)
 {
     return(new UserHistoryViewmodel
     {
         Id = userViewmodel.Id,
         Firstname = userViewmodel.Firstname,
         Lastname = userViewmodel.Lastname,
         Reports = reports,
     });
 }
예제 #10
0
 public User UserViewModelToUser(UserViewmodel userViewmodel)
 {
     return(new User
     {
         Login = userViewmodel.Login,
         FirstName = userViewmodel.Firstname,
         LastName = userViewmodel.Lastname,
         Department = userViewmodel.Department,
     });
 }
예제 #11
0
        public static byte[] ConvertUserToByteArray(UserViewmodel obj)
        {
            var bf = new BinaryFormatter();

            using (var ms = new MemoryStream())
            {
                bf.Serialize(ms, obj);
                return(ms.ToArray());
            }
        }
        public ActionResult DeleteConfirmed(int id)
        {
            UserViewmodel model = new UserViewmodel();

            model.UserID = id;
            _userService.UserDelete(model);
            //User user = db.Users.Find(id);
            //db.Users.Remove(user);
            //db.SaveChanges();
            return(RedirectToAction("Index"));
        }
 public bool CheckMailAddress(User[] users, UserViewmodel userViewmodel)
 {
     for (int i = 0; i < users.Length; i++)
     {
         if (users[i].Login.ToLower() == userViewmodel.Login.ToLower())
         {
             return(true);
         }
     }
     return(false);
 }
예제 #14
0
 public void UserCreate(UserViewmodel _user)
 {
     if (_user != null)
     {
         User usr = new User();
         usr.Email        = _user.Email;
         usr.Password     = _user.Password;
         usr.Username     = _user.Username;
         usr.UserRole     = _user.UserRole;
         usr.UserVariance = _user.UserVariance;
         _userRepository.Insert(usr);
     }
 }
예제 #15
0
        public JsonResult Login(UserViewmodel model)
        {
            bool Succeded = false;
            User user     = accountService.GetUser(model.UserName, model.Password);

            if (user != null)
            {
                accountService.Login(user.ID, user.UserName);
                Succeded = true;
            }

            return(Json(new { Succeded }, JsonRequestBehavior.AllowGet));
        }
예제 #16
0
        public UserViewmodel UserViewModelData()
        {
            var userViewmodel = new UserViewmodel()
            {
                Id        = 1,
                Login     = "******",
                Password  = "******",
                Firstname = "Samuel",
                Lastname  = "Davidsson"
            };

            return(userViewmodel);
        }
 public AuthenticationProperties SetAuthenticationProperties(string userRole, UserViewmodel user)
 {
     return(new AuthenticationProperties(new Dictionary <string, string>
     {
         {
             "userRole", userRole
         },
         {
             "userId", user.Id
         },
         {
             "userName", user.UserName
         }
     }));
 }
예제 #18
0
        public void UserDelete(UserViewmodel _user)
        {
            User user = _userRepository.FirstOrDefault(x => x.UserID == _user.UserID);

            if (user != null)
            {
                User usr = new User();
                usr.UserID       = _user.UserID;
                usr.Email        = _user.Email;
                usr.Password     = _user.Password;
                usr.Username     = _user.Username;
                usr.UserRole     = _user.UserRole;
                usr.UserVariance = _user.UserVariance;
                _userRepository.Delete(x => x.UserID == _user.UserID);
            }
        }
예제 #19
0
 public async Task <IdentityResult> Register(UserViewmodel userViewmodel, string password)
 {
     try
     {
         var user = MapUserFromUserViewModel(userViewmodel);
         return(await _registerService.Register(user, password));
     }
     catch (ServerValidationException)
     {
         throw;
     }
     catch (Exception)
     {
         throw;
     }
 }
예제 #20
0
        public async Task <IHttpActionResult> Post(UserViewmodel user)
        {
            try
            {
                var validatedUser = await _loginFacade.Validate(user.UserName, user.Password);

                return(Ok(validatedUser));
            }
            catch (ServerValidationException serverExc)
            {
                return(BadRequest(serverExc.Message));
            }
            catch (Exception ex)
            {
                return(BadRequest($"Something unexpected happened: {ex.Message}. Try to reload this page."));
            }
        }
예제 #21
0
        public List <UserViewmodel> GetAllUser()
        {
            var users = _userRepository.GetAll();
            List <UserViewmodel> userList = new  List <UserViewmodel>();

            foreach (var item in users)
            {
                UserViewmodel user = new UserViewmodel();
                user.UserID       = item.UserID;
                user.Email        = item.Email;
                user.Password     = item.Password;
                user.Username     = item.Username;
                user.UserVariance = item.UserVariance;
                user.UserRole     = item.UserRole;
                userList.Add(user);
            }
            return(userList);
        }
        public IActionResult RegisterUser(UserViewmodel userViewModel)
        {
            var users = _userService.GetAll().ToArray();

            if (userViewModel.Password != userViewModel.ConfirmPassword)
            {
                return(BadRequest("Lösenorden matchar inte."));
            }
            bool emailExist = _authControllerServices.CheckMailAddress(users, userViewModel);

            if (emailExist == false)
            {
                var user = Mapper.ViewModelToModelMapping.UserViewModelToUser(userViewModel);
                user.Password = _hashPassword.Hash(userViewModel.Password);
                _userService.Add(user);
                return(Ok("Användaren har sparats, du skickas till login sidan inom 5 sekunder!"));
            }
            return(BadRequest("Mailadressen är redan registerad."));
        }
        public IActionResult Login(UserViewmodel userViewModel)
        {
            var users = _userService.GetAll().ToArray();

            bool emailExist = _authControllerServices.CheckMailAddress(users, userViewModel);

            if (emailExist == true)
            {
                var  user    = _userService.GetUserByLogin(userViewModel.Login);
                bool isValid = _authControllerServices.CheckPassword(user, userViewModel, _hashPassword);
                if (isValid == true)
                {
                    var AuthUser    = Mapper.ModelToViewModelMapping.UserViewmodel(user);
                    var tokenString = _authControllerServices.CreateTokenToString(_configuration);
                    AuthUser.Token = tokenString;
                    return(Ok(AuthUser));
                }
            }

            return(BadRequest("Användarnamnet eller lösenordet är felaktigt."));
        }
예제 #24
0
 public IActionResult Register(UserViewmodel model)
 {
     if (ModelState.IsValid)
     {
         PasswordHasher <User> Hasher = new PasswordHasher <User>();
         User NewUser = new User
         {
             FirstName = model.FirstName,
             LastName  = model.LastName,
             Email     = model.Email,
             Password  = model.Password
         };
         NewUser.Password = Hasher.HashPassword(NewUser, NewUser.Password);
         _context.Users.Add(NewUser);
         _context.SaveChanges();
         int UserId = _context.Users.Last().Id;
         HttpContext.Session.SetInt32("Id", UserId);
         return(RedirectToAction("Dashboard", "Wedding"));
     }
     return(View("Index"));
 }
예제 #25
0
        public async Task <ActionResult> Register(UserViewmodel model)
        {
            // Generate a token that holds our input (UserViewmodle in this case).
            var token = JwtTokenGenerator(model);

            // Generate the URL in the email link to the confirmation page.
            var uriBuilder = new UriBuilder("http://localhost:44385/Auth/Confirm");
            var query      = HttpUtility.ParseQueryString(uriBuilder.Query);

            query["token"]   = token;
            uriBuilder.Query = query.ToString();
            var urlString = uriBuilder.ToString();

            var emailBody = $"<p>Click on the link below to confirm your account.</p><p>{urlString}</p>";

            var emailService = new EmailService();
            await emailService.SendAsync(model.Email, emailBody, "Confirm your account", new EmailOptionsDTO());

            TempData["RegisterResult"] = true;
            return(View());
        }
예제 #26
0
        public void Initialize()
        {
            //Test data
            _password = "******";
            var users = DataSupplier.DataSupplier.CreateUserViewmodels(_password);

            _user = users.First();

            //Mock initialise
            var registerServiceMock = new Mock <IRegisterService>();

            //Configure automapper
            var mapperConfig = new AutoMapperConfiguration();
            var mapper       = mapperConfig.Map();

            //Mock setup
            registerServiceMock.Setup(x => x.Register(It.IsAny <User>(), It.IsAny <string>())).Returns(Task.FromResult(IdentityResult.Success));

            //System under test initialise
            _sut = new RegisterFacade(registerServiceMock.Object, mapper);
        }
예제 #27
0
        public ActionResult Login(UserViewmodel model)
        {
            User user = accountService.GetUser(model.UserName, model.Password);

            if (user != null)
            {
                Role role = userRepository.GetRoleById(user.RoleId);

                accountService.Login(user.UserId, user.Name, role.Name);
                if (role.Name == "Admin")
                {
                    //return RedirectToRoute("Admin");
                    Response.Redirect("~/admin/companies.aspx");
                }

                else
                {
                    return(RedirectToAction("Index", "Default"));
                }
            }
            return(new HttpUnauthorizedResult());
        }
예제 #28
0
        public void Initialize()
        {
            //Test data
            _password = "******";
            var userViewmodels = DataSupplier.DataSupplier.CreateUserViewmodels(_password);

            _userViewModel = userViewmodels.First();

            _user = DataSupplier.DataSupplier.CreateUsers(_password).First();

            //Mock initialise
            var loginServiceMock = new Mock <ILoginService>();

            //Configure automapper
            var mapperConfig = new AutoMapperConfiguration();
            var mapper       = mapperConfig.Map();

            //Mock setup
            loginServiceMock.Setup(x => x.Validate(It.IsAny <string>(), It.IsAny <string>())).Returns(Task.FromResult(_user));

            //System under test initialise
            _sut = new LoginFacade(loginServiceMock.Object, mapper);
        }
예제 #29
0
        public async Task <IHttpActionResult> Post(UserViewmodel user)
        {
            try
            {
                var identityResult = await _registerFacade.Register(user, user.Password);

                if (identityResult.Succeeded)
                {
                    return(Ok("Registration successful!"));
                }
                else
                {
                    return(BadRequest(ErrorMessageBuilder.BuildErrorMessage("Registration failed: ", identityResult.Errors)));
                }
            }
            catch (ServerValidationException serverExc)
            {
                return(BadRequest(serverExc.Message));
            }
            catch (Exception ex)
            {
                return(BadRequest($"Something unexpected happened: {ex.Message}. Try to reload this page."));
            }
        }
        // GET: UserManagement
        public async Task <ActionResult> Index()
        {
            var userList = _context
                           .Users
                           .ToList();

            ViewData["CategoryId"] = new SelectList(_context.Category, "Id", "Name", -1);
            List <UserViewmodel> userModelList = new List <UserViewmodel>();

            foreach (var item in userList)
            {
                bool isadmin = await _userManager.IsInRoleAsync(item, "admin");

                var user = new UserViewmodel
                {
                    Id       = item.Id,
                    UserName = item.UserName,
                    FullName = item.Ad + " " + item.Soyad,
                    IsAdmin  = isadmin
                };
                userModelList.Add(user);
            }
            return(View(userModelList));
        }