Esempio n. 1
0
        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));
        }
Esempio n. 2
0
        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));
        }