Exemple #1
0
        public async Task <ActionResult <UULResponse> > DeleteUser(UserLoginInfoDTO loginInfoDTO)
        {
            UULResponse response;

            try {
                var userInfoDTO = await AuthenticateUserOrThrow(loginInfoDTO);

                var user = await UserDao.GetUserByDetailsOrThrow(_context, userInfoDTO.Login, userInfoDTO.ApartmentCode);

                _context.Users.Remove(user);
                await _context.SaveChangesAsync();

                response = new UULResponse()
                {
                    Success = true, Message = "Profile was deleted", Data = null
                };
            } catch (AuthException e) {
                response = Error.AuthFailed.CreateErrorResponse(_logger, "DeleteProfile", e);
            } catch (UserProfileNotFoundException e) {
                response = Error.ProfileNotFound.CreateErrorResponse(_logger, "DeleteProfile", e);
            } catch (Exception e) {
                response = Error.ProfileDeletionFailed.CreateErrorResponse(_logger, "DeleteProfile", e);
            }
            return(response);
        }
Exemple #2
0
        private async Task <UserInfoDTO> AuthenticateUserOrThrow(UserLoginInfoDTO loginInfoDTO)
        {
            var stored = await UserDao.GetUserByDetailsOrThrow(_context, loginInfoDTO.Login, loginInfoDTO.ApartmentCode);

            var saltedAndHashedPwd = SecHelper.SaltAndHashPwd(loginInfoDTO.Pwd, stored.Salt);

            if (saltedAndHashedPwd != stored.Hash)
            {
                throw new AuthException("Wrong credentials");
            }
            return(new UserInfoDTO()
            {
                ApartmentCode = loginInfoDTO.ApartmentCode, Login = loginInfoDTO.Login
            });
        }
Exemple #3
0
        public async Task <ActionResult <UULResponse> > LoginUser(UserLoginInfoDTO loginInfoDTO)
        {
            UULResponse response;

            try {
                var userInfoDTO = await AuthenticateUserOrThrow(loginInfoDTO);

                var tokenString = SecHelper.GenerateJSONWebToken(userInfoDTO.Login, userInfoDTO.ApartmentCode, _config);
                response = new UULResponse()
                {
                    Success = true, Message = "Login success", Data = tokenString
                };
            } catch (AuthException e) {
                response = Error.AuthFailed.CreateErrorResponse(_logger, "Login", e);
            } catch (Exception e) {
                response = Error.ProfileLoginFailed.CreateErrorResponse(_logger, "Login", e);
            }
            return(response);
        }
Exemple #4
0
        public async Task <UULResponse> LoginAsync(UserLoginInfoDTO loginInfoDTO)
        {
            var loginItemJson = new StringContent(
                JsonSerializer.Serialize(loginInfoDTO, _jsonSerializerOptions),
                Encoding.UTF8,
                "application/json");
            UULResponse result;

            try {
                using var httpResponse = await _httpClient.PostAsync("/api/users/login", loginItemJson);

                httpResponse.EnsureSuccessStatusCode();

                using var httpResponseStream = await httpResponse.Content.ReadAsStreamAsync();

                result = await JsonSerializer.DeserializeAsync <UULResponse>(httpResponseStream, _jsonSerializerOptions);
            } catch (Exception e) {
                result = new UULResponse()
                {
                    Success = false, Data = null, Message = e.Message
                };
            }
            return(result);
        }