[AllowAnonymous] // No authorization required for Register Request, obviously
        public async Task <dynamic> Post([FromBody] TBody requestBody)
        {
            this.EnsureModelValidation();

            var userCollection = MongoWrapper.Database.GetCollection <Models.User>(nameof(Models.User));

            await RegistrarUtils.TestUserExists(this, userCollection, requestBody.Email);

            ResponseBody responseBody = new ResponseBody();

            DateTime creationDate = DateTime.UtcNow;

            var user = await BindUser(requestBody, creationDate);

            // 300MB file storage limit default
            user.FileBytesLimit = 300_000_000;

            var gridFsBucket = new GridFSBucket <ObjectId>(MongoWrapper.Database);

            Task photoTask = this.UploadPhoto(requestBody.Foto, gridFsBucket, user, creationDate);

            var insertTask = userCollection.InsertOneAsync(user);

            try
            {
                await insertTask;
            }
            catch (Exception e)
            {
                Logger.LogError("Error while registering user", e);
                try
                {
                    await    photoTask;
                    ObjectId?photoId = user?.Avatar?._id;
                    if (photoId.HasValue)
                    {
                        var deleteLingeringPhotoTask = gridFsBucket.DeleteAsync(photoId.Value);
                    }
                }
                catch
                {
                    // Ignore, no need to erase photo or log anything: User's insert has failed anyways.
                }
                throw;
            }

            // Não esperamos o e-mail ser enviado, apenas disparamos. Caso não tenha sido enviado vai ter um botão na home depois enchendo o saco pro usuário confirmar o e-mail dele.
            var sendEmailTask = EmailUtils.SendConfirmationEmail(MongoWrapper, SmtpConfiguration, user);

            var(tokenCreationDate, tokenExpiryDate, token) = await AuthenticationUtils.GenerateJwtTokenForUser(user._id.ToString(), TokenConfigurations, SigningConfigurations);

            responseBody.Message = "Registro efetuado com sucesso. Não se esqueça de confirmar seu e-mail!";
            responseBody.Code    = ResponseCode.GenericSuccess;
            responseBody.Success = true;
            responseBody.Data    = new
            {
                tokenData = new
                {
                    created     = tokenCreationDate,
                    expiration  = tokenExpiryDate,
                    accessToken = token,
                }
            };
            Response.StatusCode = (int)HttpStatusCode.OK;
            return(responseBody);
        }