Exemple #1
0
        public async Task <IActionResult> GetUser()
        {
            var authedUser = HttpContext.User;

            if (!authedUser.HasClaim(c =>
                                     c.Type == ClaimTypes.NameIdentifier))
            {
                this.HttpContext.Response.StatusCode = 401;
                var errorResponse = new ErrorResponse();
                errorResponse.addErrorKey("Missing authentication");
                return(Json(errorResponse));
            }
            string authUsername = authedUser.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value;
            var    user         = await _userManager.FindByNameAsync(authUsername);

            if (null == user.UserName)
            {
                this.HttpContext.Response.StatusCode = 404;
                var errorResponse = new ErrorResponse();
                errorResponse.addErrorKey("No user found with the specified username");
                return(Json(errorResponse));
            }
            UserHTTPTransferObject userHTTPTransferObject = new UserHTTPTransferObject();

            userHTTPTransferObject.User = user;
            return(Ok(userHTTPTransferObject));
        }
Exemple #2
0
        public async Task <IActionResult> updateUser([FromBody] UserHTTPTransferObject userHTTPTransferObject)
        {
            var authedUser = HttpContext.User;

            if (!authedUser.HasClaim(c =>
                                     c.Type == ClaimTypes.NameIdentifier))
            {
                this.HttpContext.Response.StatusCode = 401;
                var authErrorResponse = new ErrorResponse();
                authErrorResponse.addErrorKey("Missing authentication");
                return(Json(authErrorResponse));
            }
            string authedUsername       = authedUser.Claims.FirstOrDefault(c => c.Type == ClaimTypes.NameIdentifier).Value;
            var    authedUserInDatabase = await _userManager.FindByNameAsync(authedUsername);

            if (null == authedUserInDatabase.UserName)
            {
                this.HttpContext.Response.StatusCode = 404;
                var noUserErrorResponse = new ErrorResponse();
                noUserErrorResponse.addErrorKey("No user found with the specified username");
                return(Json(noUserErrorResponse));
            }
            ApplicationUser user = userHTTPTransferObject.User;

            authedUserInDatabase.Image = !String.IsNullOrWhiteSpace(user.Image) ? user.Image : authedUserInDatabase.Image;
            authedUserInDatabase.Bio   = !String.IsNullOrWhiteSpace(user.Bio) ? user.Bio : authedUserInDatabase.Bio;
            authedUserInDatabase.Email = !String.IsNullOrWhiteSpace(user.Email) ? user.Email : authedUserInDatabase.Email;
            var updateUserResult = await _userManager.UpdateAsync(authedUserInDatabase);

            if (updateUserResult.Succeeded)
            {
                user          = authedUserInDatabase;
                user.Password = null;
                userHTTPTransferObject.User = user;
                return(Ok(userHTTPTransferObject));
            }
            this.HttpContext.Response.StatusCode = 422;
            var updateUserErrorResponse = new ErrorResponse();

            foreach (var error in updateUserResult.Errors)
            {
                updateUserErrorResponse.addErrorKey(error.Description);
            }
            return(Json(updateUserErrorResponse));
        }
Exemple #3
0
        public async Task <IActionResult> Authenticate([FromBody] UserHTTPTransferObject userHTTPTransferObject)
        {
            ApplicationUser user          = userHTTPTransferObject.User;
            ApplicationUser signingInUser = await _userManager.FindByEmailAsync(user.Email);

            var result = await _signInManager.PasswordSignInAsync(signingInUser, user.Password, false, false);

            if (result.Succeeded)
            {
                signingInUser.Token         = BuildToken(signingInUser);
                signingInUser.Password      = null;
                userHTTPTransferObject.User = signingInUser;
                return(Ok(userHTTPTransferObject));
            }
            this.HttpContext.Response.StatusCode = 422;
            var errorResponse = new ErrorResponse();

            errorResponse.addErrorKey($"An error occured trying to sign in {signingInUser.Email}");
            return(Json(errorResponse));
        }
Exemple #4
0
        public async Task <IActionResult> Register([FromBody] UserHTTPTransferObject userHTTPTransferObject)
        {
            var user   = userHTTPTransferObject.User;
            var result = await _userManager.CreateAsync(user, user.Password);

            if (result.Succeeded)
            {
                this.HttpContext.Response.StatusCode = 201;
                user.Password = null; // Don't return password
                userHTTPTransferObject.User = user;
                return(Json(userHTTPTransferObject));
            }
            this.HttpContext.Response.StatusCode = 422;
            var errorResponse = new ErrorResponse();

            foreach (var error in result.Errors)
            {
                errorResponse.addErrorKey(error.Description);
            }
            return(Json(errorResponse));
        }