public async Task <IEnumerable <UserToReturn> > GetListAdmins() { var users = await userManager.Users.ToListAsync(); var userDtos = new List <UserToReturn>(); foreach (var user in users) { var roleNames = await userManager.GetRolesAsync(user); if (roleNames[0] == "Admin") { var userDto = new UserToReturn { Id = user.Id, UserName = user.UserName, Email = user.Email, PhoneNumber = user.PhoneNumber, Roles = roleNames[0] }; userDtos.Add(userDto); } } return(userDtos); }
public async Task <IActionResult> Login(UserForLoginDTO userForLogin) { if (String.IsNullOrEmpty(userForLogin.Email) || String.IsNullOrEmpty(userForLogin.Password)) { error.Err = "Wszystkie pola muszą zostać wypełnione i nie mogą być puste!"; error.Desc = "Uzupełnij wszystkie pola"; return(Unauthorized(error)); } var user = await _apiHelper.LoginUser(userForLogin.Email.ToLower(), userForLogin.Password); if (user == null) { error.Err = "Niepoprawny email lub hasło"; error.Desc = "Uzupełnij pola od nowa"; return(Unauthorized(error)); } var classes = new List <ClassToReturn>(); for (int i = 0; i < user.classMember.Count; i++) { var classObj = await _apiHelper.ReturnClassByID(user.classMember[i]); classes.Add(await _apiHelper.ReturnClassToReturn(classObj, user.Id)); } UserToReturn userToReturn = _apiHelper.ReturnUserToReturn(user); #region TokenCreating var claims = new[] { new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()), new Claim(ClaimTypes.Email, user.email) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(AppSettingsHelper.tokenKey)); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(7), SigningCredentials = creds }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); #endregion return(Ok(new { token = tokenHandler.WriteToken(token), userToReturn, classes })); }
private ActionResult Profile(UserToReturn model) { var user = new UserToReturn { FirstName = model.FirstName, Email = model.Email }; //UserInfo user = JsonConvert.DeserializeObject<UserInfo>(Convert.ToString(TempData["Profile"])); return(View(user)); }
public UserToReturn ReturnUserToReturn(User user) { UserToReturn userToReturn = new UserToReturn(); userToReturn.Id = user.Id; userToReturn.Email = user.email; userToReturn.Name = user.name; userToReturn.Surrname = user.surrname; userToReturn.UserRole = user.userRole; userToReturn.UserCode = user.userCode; return(userToReturn); }
public async Task <IActionResult> Register([FromBody] AddUserDto model) { var userToRegister = _userManager.Users.FirstOrDefault(x => x.Email == model.Email); if (userToRegister != null) { return(BadRequest("Email already exist")); } var user = new User { UserName = model.Email, LastName = model.LastName, FirstName = model.FirstName, Email = model.Email }; var result = await _userManager.CreateAsync(user, model.Password); if (!result.Succeeded) { foreach (var err in result.Errors) { ModelState.AddModelError("", err.Description); } return(BadRequest(ModelState)); } var currentIp = Utility.getMac(); var response = new LogActivity { UserId = user.Id, DeviceIp = currentIp }; await _logActivityRepository.AddLogActivity(response); var userData = _userManager.Users.FirstOrDefault(x => x.Email == model.Email); var data = new UserToReturn { Email = userData.Email, FirstName = userData.FirstName, LastName = userData.LastName }; return(Ok(data)); }
/// <summary> /// Fetch all users i pages /// </summary> /// <param name="page">page of user to show</param> /// <returns>The returned response</returns> public AllUsersToReturn GetAllUsers(int page) { var result = UserManager.Users; if (result.Any()) { var users = new List <UserToReturn>(); foreach (var item in result) { var user = new UserToReturn { LastName = item.LastName, FirstName = item.FirstName, Email = item.Email, Photo = item.Photo, DateCreated = item.DateCreated }; users.Add(user); } int toSkip = (page - 1) * 5; int remainder = users.Count - toSkip; if (remainder >= 5) { //return users.Skip(toSkip).Take(5).ToList(); return(new AllUsersToReturn { CurrentPage = page, Users = users.Skip(toSkip).Take(5).ToList() }); } else if (!(remainder < 1)) { return(new AllUsersToReturn { CurrentPage = page, Users = users.Skip(toSkip).Take(remainder).ToList() }); //return users.Skip(toSkip).Take(remainder).ToList(); } } throw new Exception("No user not found"); }
/// <summary> /// Get a user by email /// </summary> /// <param name="email">email of user to search</param> /// <returns>The returned response</returns> public async Task <UserToReturn> GetUserByEmail(string email) { var result = await UserManager.FindByEmailAsync(email); if (result != null) { var user = new UserToReturn() { LastName = result.LastName, FirstName = result.FirstName, Email = result.Email, Photo = result.Photo, DateCreated = result.DateCreated }; return(user); } throw new Exception("User not found"); }
public UserToReturn Get(string login, string password) { DbContext _user_context = HttpContext.RequestServices.GetService(typeof(DbContext)) as DbContext; UserFromDbModel _user = _user_context.GetCurrentUser(login); UserToReturn result = new UserToReturn(); if (_user == null) { HttpContext.Session.Clear(); } else if (_user.upassword == password) { HttpContext.Session.SetInt32("authorizated", 1); if (_user.administrator) { HttpContext.Session.SetInt32("administrator", 1); } result.authorizated = true; if (_user.administrator) { result.administrator = true; } if (_user.accounter) { result.accounter = true; } if (_user.customer) { result.customer = true; } if (_user.realizator) { result.realizator = true; } } else { HttpContext.Session.Clear(); } return(result); }
public async Task <IActionResult> Register(UserForRegisterDTO userForRegister) { if (String.IsNullOrWhiteSpace(userForRegister.Email) || String.IsNullOrWhiteSpace(userForRegister.Password)) { error.Err = "Wszystkie pola muszą być wypełnione"; error.Desc = "Wprowadź wszystkie dane"; return(StatusCode(405, error)); } List <string> list1 = new List <string>(); var userToCreate = new User { email = userForRegister.Email, userRole = userForRegister.UserRole, classMember = list1, name = userForRegister.Name, surrname = userForRegister.Surname, pendingInvitations = list1 }; var isUserExisting = await _apiHelper.UserExists(userForRegister.Email); if (isUserExisting) { error.Err = "Ten adres email jest już zajęty"; error.Desc = "Wprowadź inny adres email"; return(StatusCode(405, error)); } if (userForRegister.UserRole != 1 && userForRegister.UserRole != 0) { error.Err = "Zła rola użytkownika"; error.Desc = "Wprowadź rolę 1 lub 0"; return(StatusCode(405, error)); } if (userForRegister.UserRole == 0) { var classObj = await _apiHelper.ReturnClassByID(userForRegister.UserCode); if (classObj == null) { error.Err = "Błędny kod klasy"; error.Desc = "Prosze wprowadzić poprawny kod od nauczyciela"; return(StatusCode(405, error)); } userToCreate.classMember.Add(classObj.Id); userToCreate.userCode = classObj.Id; userForRegister.Email = userForRegister.Email.ToLower(); var createdUser = await _apiHelper.RegisterUser(userToCreate, userForRegister.Password); classObj.membersAmount++; classObj.members.Add(createdUser.Id); await _apiHelper.ReplaceClassInfo(classObj); } if (userForRegister.UserRole == 1) { userToCreate.userCode = null; userToCreate.email = userForRegister.Email.ToLower(); var createdUser = await _apiHelper.RegisterUser(userToCreate, userForRegister.Password); } var user = await _apiHelper.LoginUser(userForRegister.Email.ToLower(), userForRegister.Password); var classes = new List <ClassToReturn>(); var userClasses = user.classMember.ToArray(); for (int i = 0; i < user.classMember.Count; i++) { var classObj = await _apiHelper.ReturnClassByID(userClasses[i]); classes.Add(await _apiHelper.ReturnClassToReturn(classObj, user.Id)); } UserToReturn userToReturn = _apiHelper.ReturnUserToReturn(user); #region TokenCreating var claims = new[] { new Claim(ClaimTypes.NameIdentifier, user.Id.ToString()), new Claim(ClaimTypes.Email, user.email) }; var key = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(AppSettingsHelper.tokenKey)); var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha512Signature); var tokenDescriptor = new SecurityTokenDescriptor { Subject = new ClaimsIdentity(claims), Expires = DateTime.Now.AddDays(7), SigningCredentials = creds }; var tokenHandler = new JwtSecurityTokenHandler(); var token = tokenHandler.CreateToken(tokenDescriptor); #endregion return(Ok(new { token = tokenHandler.WriteToken(token), userToReturn, classes })); }
public async Task <IActionResult> Login([FromBody] LoginCredentials credentials) { try { if (!ModelState.IsValid || credentials == null) { return(new BadRequestObjectResult(new { Message = "Đăng nhập thất bại" })); } var identityUser = await userManager.FindByNameAsync(credentials.UserName); if (identityUser == null) { return(new BadRequestObjectResult(new { Message = "Sai tên tài khoản" })); } var result = userManager.PasswordHasher.VerifyHashedPassword(identityUser, identityUser.PasswordHash, credentials.Password); if (result == PasswordVerificationResult.Failed) { return(new BadRequestObjectResult(new { Message = "Sai mật khẩu" })); } var roles = await userManager.GetRolesAsync(identityUser); if (roles[0] != "Admin") { return(new BadRequestObjectResult(new { Message = "Đăng nhập thất bại" })); } var claims = new List <Claim> { new Claim(ClaimTypes.Email, identityUser.Email), new Claim(ClaimTypes.Name, identityUser.UserName), new Claim(ClaimTypes.Role, roles[0]) }; var claimsIdentity = new ClaimsIdentity( claims, CookieAuthenticationDefaults.AuthenticationScheme); await HttpContext.SignInAsync( CookieAuthenticationDefaults.AuthenticationScheme, new ClaimsPrincipal(claimsIdentity)); var userToReturn = new UserToReturn { Id = identityUser.Id, UserName = identityUser.UserName, Address = identityUser.Address, PhoneNumber = identityUser.PhoneNumber, Email = identityUser.Email, Roles = roles[0], Message = "Đăng nhập thành công" }; return(Ok(userToReturn)); } catch (Exception ex) { return(BadRequest(ex.Message.ToString())); } }