private async Task IssueTokenAsync(string username) { var dbuser = await this.Database.Users .FirstOrDefaultAsync(x => x.Id == username); if (dbuser == null) { Console.WriteLine("Specified user does not exist"); this.PrintUsage(UsageKind.TokenIssue); return; } var token = AuthenticationToken.IssueNew(dbuser.Id); await this.Database.Tokens.AddAsync(new Token { UserId = token.UserId, IssuedAt = token.IssuedAt.UtcDateTime, Guid = token.Guid }); await this.Database.SaveChangesAsync(); Console.WriteLine("Token issued"); Console.WriteLine(this.Tokens.EncodeToken(token)); }
public async Task <IActionResult> Token(string username = null, string email = null) { if (string.IsNullOrWhiteSpace(username)) { username = "******"; } if (string.IsNullOrWhiteSpace(email)) { email = $"{username}@{this.HttpContext.Request.Host.Host}"; } var usr = this.Database.Users.FirstOrDefault(x => x.Id == username && x.Email == email); if (usr == null) { usr = new User { Id = username, Email = email }; await this.Database.Users.AddAsync(usr).ConfigureAwait(false); } var tok = this.Database.Tokens.FirstOrDefault(x => x.UserId == usr.Id); var atok = tok != null ? new AuthenticationToken(tok.UserId, tok.IssuedAt.Value, tok.Guid) : default; if (tok == null) { atok = AuthenticationToken.IssueNew(usr.Id); tok = new Token { UserId = atok.UserId, Guid = atok.Guid, IssuedAt = atok.IssuedAt.DateTime }; await this.Database.Tokens.AddAsync(tok).ConfigureAwait(false); } await this.Database.SaveChangesAsync().ConfigureAwait(false); return(this.Content(this.Tokens.EncodeToken(atok), "text/plain", AbstractionUtilities.UTF8)); }