コード例 #1
0
        public async Task <Guid> CreateAsync(Guid userId, DateTime expiryDate)
        {
            using (var db = new MainDatabase().Get)
            {
                return(await db.QuerySingleAsync <Guid>(@"
INSERT INTO [dbo].[Sessions] 
(ID, IDUser, Expire, Data) 
OUTPUT INSERTED.ID 
VALUES (NEWID(), @userId, @expiryDate, @data)", new { userId, expiryDate, data = new byte[0] }));
            }
        }
コード例 #2
0
        public async Task <string> RegisterPasswordResetTokenAsync(Guid userId, string passwordResetToken)
        {
            using (var db = new MainDatabase().Get)
                using (var transaction = db.BeginTransaction())
                {
                    try
                    {
                        var expiryDate = DateTime.Now.Add(expiryLength);

                        await db.ExecuteAsync("DELETE FROM [dbo].[UserPasswordReset] WHERE UserId = @userId", new { userId }, transaction : transaction);

                        var generatedId = await db.QuerySingleAsync <Guid>("INSERT INTO [dbo].[UserPasswordReset] (UserId, ExpiryDate, ResetPasswordToken) OUTPUT INSERTED.Id VALUES (@userId, @expiryDate, @passwordResetToken)", new { userId, expiryDate, passwordResetToken }, transaction : transaction);

                        transaction.Commit();

                        return(generatedId.ToString());
                    }
                    catch (SqlException ex)
                    {
                        transaction.Rollback();
                        throw ex;
                    }
                }
        }