// One-Time-Token Request (This method should be called from client-side code, but is included in this SDK for completeness.) public async Task <TokenResponse> RegisterOneTimeToken(string jwt, OneTimeTokenRequest req) { string jsonRequest = CommonService.JsonSerializer <OneTimeTokenRequest>(req); string jsonResponse = await PostRequestUsingBearerAuth(jsonRequest, "registeronetimetoken", jwt); return(CommonService.JsonDeSerializer <TokenResponse>(jsonResponse)); }
/// <summary> /// /// </summary> /// <param name="request"></param> /// <returns></returns> public async Task <AuthToken> VerifyAccount(OneTimeTokenRequest request) { var oneTimeToken = await Context.OneTimeTokens.FirstOrDefaultAsync(t => t.Token == request.Token && t.TokenType == (byte)OneTimeTokenType.AccountVerification && t.ValidUntil > DateTime.Now); if (oneTimeToken == null) { return(null); } var user = await Context.Users.FirstOrDefaultAsync(u => u.Email == oneTimeToken.Email && !u.IsVerified); if (user == null) { return(null); } var token = await authManager.GenerateTokenAsync(user.Id, request.DeviceId); Context.OneTimeTokens.Remove(oneTimeToken); user.IsVerified = true; Context.Update(user); await Context.SaveChangesAsync(); return(token); }
public async Task <AuthToken> PostVerifyAccount([FromBody] OneTimeTokenRequest data) { var token = await userManager.VerifyAccount(data); return(token); }