Пример #1
0
        public async Task <AuthenticateResponse> Authenticate(string userName, string password)
        {
            var res = await _loginManager.CheckAccess(userName, password);

            if (!res.Success)
            {
                return(null);
            }

            // Create user if not exists because login manager has greenlighed us
            var user = await _userManager.FindByNameAsync(userName) ?? await CreateUserInternal(new User { UserName = userName }, password);

            if (!user.Metadata.IsSameAs(res.Metadata))
            {
                user.Metadata = res.Metadata;
                await _applicationDbContext.SaveChangesAsync();
            }

            await SyncRoles(user);

            // authentication successful so generate jwt token
            var tokenDescriptor = await GenerateJwtToken(user);

            return(new AuthenticateResponse(user, tokenDescriptor.Token, tokenDescriptor.ExpiresOn));
        }