public async Task <User> FindOrCreateUser(IGitHubUser gitHubUser, CancellationToken cancellationToken) { var user = _context.Users .FirstOrDefault(u => u.GitHubLogin.ToLower() == gitHubUser.login.ToLower()); if (user == null) { var submitted = _context.UserStatusTypes.FirstOrDefault(s => s.Name == "Submitted"); user = new User { GitHubLogin = gitHubUser.login, UserStatusTypeID = submitted.ID }; _context.Users.Add(user); await _context.SaveChangesAsync(cancellationToken); } return(user); }
public async Task <IApplicationUser> AuthorizeUser(IGitHubUser gitHubUser, IAccessToken gitHubAccessToken, CancellationToken cancellationToken) { var user = await FindOrCreateUser(gitHubUser, cancellationToken); return(new ApplicationUser(IssueJWTToken(user, gitHubAccessToken.access_token), user.GitHubLogin)); }