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);
        }
Esempio n. 2
0
        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));
        }
Esempio n. 4
0
        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);
        }
Esempio n. 5
0
        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));
        }
Esempio n. 6
0
        /// <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");
        }
Esempio n. 7
0
        /// <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");
        }
Esempio n. 8
0
        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);
        }
Esempio n. 9
0
        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
            }));
        }
Esempio n. 10
0
        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()));
            }
        }