Fix email verification code

This commit is contained in:
Kieran 2023-06-09 02:20:54 +02:00
parent 1199ea0174
commit fd90d14b19
Signed by: Kieran
GPG Key ID: DE71CEB3925BE941

View File

@ -1,4 +1,5 @@
using Microsoft.AspNetCore.Mvc; using Microsoft.AspNetCore.Mvc;
using Newtonsoft.Json;
using VoidCat.Database; using VoidCat.Database;
using VoidCat.Model; using VoidCat.Model;
using VoidCat.Services.Abstractions; using VoidCat.Services.Abstractions;
@ -137,17 +138,16 @@ public class UserController : Controller
/// Confirm email verification code /// Confirm email verification code
/// </summary> /// </summary>
/// <param name="id">User id to verify</param> /// <param name="id">User id to verify</param>
/// <param name="code">Verification code to check</param> /// <param name="req">Verification code to check</param>
/// <returns></returns> /// <returns></returns>
[HttpPost] [HttpPost]
[Route("verify")] [Route("verify")]
public async Task<IActionResult> VerifyCode([FromRoute] string id, [FromBody] string code) public async Task<IActionResult> VerifyCode([FromRoute] string id, [FromBody] VerifyCodeRequest req)
{ {
var user = await GetAuthorizedUser(id); var user = await GetAuthorizedUser(id);
if (user == default) return Unauthorized(); if (user == default) return Unauthorized();
var token = code.FromBase58Guid(); if (!await _emailVerification.VerifyCode(user, req.Code)) return BadRequest();
if (!await _emailVerification.VerifyCode(user, token)) return BadRequest();
user.Flags |= UserFlags.EmailVerified; user.Flags |= UserFlags.EmailVerified;
await _store.UpdateProfile(user); await _store.UpdateProfile(user);
@ -167,4 +167,11 @@ public class UserController : Controller
var gid = id.FromBase58Guid(); var gid = id.FromBase58Guid();
return await _store.Get(gid); return await _store.Get(gid);
} }
public class VerifyCodeRequest
{
[JsonProperty("code")]
[JsonConverter(typeof(Base58GuidConverter))]
public Guid Code { get; init; }
}
} }