示例#1
0
        public async Task <IActionResult> Get(string userName)
        {
            string           askingUserName = User.Identity.Name;
            TegetgramUserDTO user           = await _userService.GetUser(askingUserName, userName);

            return(Ok(user));
        }
示例#2
0
        public async Task <IActionResult> Post([FromBody] UserRequestModel credentials)
        {
            ApiUser apiUser = new ApiUser(credentials.UserName);
            var     result  = await _userManager.CreateAsync(apiUser, credentials.Password);

            if (!result.Succeeded)
            {
                _logger.LogError($"User creation error: {String.Join(" | ", result.Errors.Select(x => x.Description).ToArray())}");
                throw new ApplicationException("Could not create user.");
            }

            var now          = DateTime.Now;
            var key          = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_options.SecretKey));
            var tokenHandler = new JsonWebTokenHandler();
            var descriptor   = new SecurityTokenDescriptor
            {
                Issuer    = _options.Issuer,
                IssuedAt  = now,
                NotBefore = now,
                Expires   = now.AddHours(1),
                Claims    = new Dictionary <string, object> {
                    { JwtRegisteredClaimNames.Sub, apiUser.UserName }
                },
                SigningCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256)
            };

            TegetgramUserDTO user = await _userService.GetUser(apiUser.UserName, apiUser.UserName);

            return(Ok(new
            {
                access_token = tokenHandler.CreateToken(descriptor),
                user = user
            }));
        }
示例#3
0
        public async Task <IActionResult> Get([FromBody] UserRequestModel credentials)
        {
            ApiUser apiUser = await _userManager.FindByNameAsync(credentials.UserName);

            if (apiUser == null)
            {
                throw new ApplicationException("Invalid user name or password.");
            }

            var result = await _signInManager.CheckPasswordSignInAsync(apiUser, credentials.Password, false);

            if (!result.Succeeded)
            {
                throw new ApplicationException("Invalid user name or password.");
            }

            var now          = DateTime.Now;
            var key          = new SymmetricSecurityKey(Encoding.ASCII.GetBytes(_options.SecretKey));
            var tokenHandler = new JsonWebTokenHandler();
            var descriptor   = new SecurityTokenDescriptor
            {
                Issuer    = _options.Issuer,
                IssuedAt  = now,
                NotBefore = now,
                Expires   = now.AddHours(1),
                Claims    = new Dictionary <string, object> {
                    { JwtRegisteredClaimNames.Sub, apiUser.UserName }
                },
                SigningCredentials = new SigningCredentials(key, SecurityAlgorithms.HmacSha256)
            };

            TegetgramUserDTO user = await _userService.GetUser(apiUser.UserName, apiUser.UserName);

            return(Ok(new
            {
                access_token = tokenHandler.CreateToken(descriptor),
                user = user
            }));
        }