feat(jwt): enhance JWT token generation with user address check
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 6m36s
Build and Deploy to Kubernetes / build-and-deploy (push) Successful in 6m36s
- Updated GenerateJwtTokenService to include IApplicationDbContext for accessing user addresses. - Added logic to check if a user has an address and included this information as a claim in the generated JWT token. - Improved overall token generation process by incorporating additional user data for better context.
This commit is contained in:
@@ -0,0 +1,157 @@
|
||||
/*
|
||||
Correct users wrongly marked as DayaLoan — should be Manual.
|
||||
|
||||
Affects:
|
||||
- CMS.Users.PackagePurchaseMethod (1 → 3)
|
||||
- CMS.ClubMemberships.PurchaseMethod (1 or 0 → 3)
|
||||
- CMS.ClubMembershipCycles.PurchaseMethod (1 or 0 → 3)
|
||||
- CMS.UserPackagePurchases.PurchaseMethod (1 → 3)
|
||||
- CMS.Users.HasReceivedDayaCredit / DayaCreditReceivedAt clear
|
||||
- CMS.DayaLoanContracts soft-delete stub rows
|
||||
(IsProcessed=0, no TransactionId, no ProcessedDate)
|
||||
for these UserIds only
|
||||
|
||||
PackagePurchaseMethod: None=0, DayaLoan=1, DirectPurchase=2, Manual=3
|
||||
|
||||
NOTE: UserId=43 shares NationalCode 5289780335 with UserId=42 (real Excel Daya).
|
||||
This script only touches UserId=43's own rows — not UserId=42's contract.
|
||||
|
||||
Defaults to ROLLBACK. Uncomment COMMIT after verifying PRINT counts.
|
||||
*/
|
||||
|
||||
SET NOCOUNT ON;
|
||||
SET XACT_ABORT ON;
|
||||
|
||||
BEGIN TRAN;
|
||||
|
||||
DECLARE @FixUsers TABLE (UserId BIGINT PRIMARY KEY);
|
||||
INSERT INTO @FixUsers (UserId) VALUES
|
||||
(2),(7),(8),(9),(10),(11),(12),(13),(40),(41),(43),(45),(47),
|
||||
(52),(58),(69),(71),(72),(74),(75),(87),(88),(89),(90),(91),(93),
|
||||
(96),(99),(103),(105),(106),(111),(113),(115),(116),(119),(121),
|
||||
(125),(130),(142),(162),(169),(170),(171),(172),(175),(176);
|
||||
|
||||
------------------------------------------------------------
|
||||
-- 1) Users
|
||||
------------------------------------------------------------
|
||||
UPDATE u
|
||||
SET
|
||||
u.PackagePurchaseMethod = 3, -- Manual
|
||||
u.HasReceivedDayaCredit = 0,
|
||||
u.DayaCreditReceivedAt = NULL,
|
||||
u.LastModified = SYSUTCDATETIME()
|
||||
FROM CMS.Users u
|
||||
INNER JOIN @FixUsers f ON f.UserId = u.Id
|
||||
WHERE u.IsDeleted = 0
|
||||
AND (
|
||||
u.PackagePurchaseMethod = 1 -- DayaLoan
|
||||
OR u.HasReceivedDayaCredit = 1
|
||||
OR u.DayaCreditReceivedAt IS NOT NULL
|
||||
);
|
||||
|
||||
PRINT CONCAT('Users updated: ', @@ROWCOUNT);
|
||||
|
||||
------------------------------------------------------------
|
||||
-- 2) ClubMemberships
|
||||
------------------------------------------------------------
|
||||
UPDATE m
|
||||
SET
|
||||
m.PurchaseMethod = 3, -- Manual
|
||||
m.LastModified = SYSUTCDATETIME()
|
||||
FROM CMS.ClubMemberships m
|
||||
INNER JOIN @FixUsers f ON f.UserId = m.UserId
|
||||
WHERE m.IsDeleted = 0
|
||||
AND m.PurchaseMethod IN (0, 1); -- None or DayaLoan
|
||||
|
||||
PRINT CONCAT('ClubMemberships updated: ', @@ROWCOUNT);
|
||||
|
||||
------------------------------------------------------------
|
||||
-- 3) ClubMembershipCycles
|
||||
------------------------------------------------------------
|
||||
UPDATE c
|
||||
SET
|
||||
c.PurchaseMethod = 3, -- Manual
|
||||
c.LastModified = SYSUTCDATETIME()
|
||||
FROM CMS.ClubMembershipCycles c
|
||||
INNER JOIN @FixUsers f ON f.UserId = c.UserId
|
||||
WHERE c.IsDeleted = 0
|
||||
AND c.PurchaseMethod IN (0, 1);
|
||||
|
||||
PRINT CONCAT('ClubMembershipCycles updated: ', @@ROWCOUNT);
|
||||
|
||||
------------------------------------------------------------
|
||||
-- 4) UserPackagePurchases (incl. backfill rows)
|
||||
------------------------------------------------------------
|
||||
UPDATE upp
|
||||
SET
|
||||
upp.PurchaseMethod = 3, -- Manual
|
||||
upp.LastModified = SYSUTCDATETIME()
|
||||
FROM CMS.UserPackagePurchases upp
|
||||
INNER JOIN @FixUsers f ON f.UserId = upp.UserId
|
||||
WHERE upp.IsDeleted = 0
|
||||
AND upp.PurchaseMethod = 1; -- only Daya → Manual (keep Direct=2 if any)
|
||||
|
||||
PRINT CONCAT('UserPackagePurchases updated: ', @@ROWCOUNT);
|
||||
|
||||
------------------------------------------------------------
|
||||
-- 5) Soft-delete stub DayaLoanContracts (never processed)
|
||||
------------------------------------------------------------
|
||||
UPDATE d
|
||||
SET
|
||||
d.IsDeleted = 1,
|
||||
d.LastModified = SYSUTCDATETIME()
|
||||
FROM CMS.DayaLoanContracts d
|
||||
INNER JOIN @FixUsers f ON f.UserId = d.UserId
|
||||
WHERE d.IsDeleted = 0
|
||||
AND d.IsProcessed = 0
|
||||
AND d.TransactionId IS NULL
|
||||
AND d.ProcessedDate IS NULL;
|
||||
|
||||
PRINT CONCAT('DayaLoanContracts soft-deleted (stubs): ', @@ROWCOUNT);
|
||||
|
||||
------------------------------------------------------------
|
||||
-- Verify
|
||||
------------------------------------------------------------
|
||||
SELECT 'Users still Daya' AS CheckName, COUNT(*) AS Cnt
|
||||
FROM CMS.Users u
|
||||
INNER JOIN @FixUsers f ON f.UserId = u.Id
|
||||
WHERE u.IsDeleted = 0 AND u.PackagePurchaseMethod = 1
|
||||
UNION ALL
|
||||
SELECT 'Club still Daya/None', COUNT(*)
|
||||
FROM CMS.ClubMemberships m
|
||||
INNER JOIN @FixUsers f ON f.UserId = m.UserId
|
||||
WHERE m.IsDeleted = 0 AND m.PurchaseMethod IN (0, 1)
|
||||
UNION ALL
|
||||
SELECT 'Cycle still Daya/None', COUNT(*)
|
||||
FROM CMS.ClubMembershipCycles c
|
||||
INNER JOIN @FixUsers f ON f.UserId = c.UserId
|
||||
WHERE c.IsDeleted = 0 AND c.PurchaseMethod IN (0, 1)
|
||||
UNION ALL
|
||||
SELECT 'UPP still Daya', COUNT(*)
|
||||
FROM CMS.UserPackagePurchases upp
|
||||
INNER JOIN @FixUsers f ON f.UserId = upp.UserId
|
||||
WHERE upp.IsDeleted = 0 AND upp.PurchaseMethod = 1
|
||||
UNION ALL
|
||||
SELECT 'Active stub Daya contracts', COUNT(*)
|
||||
FROM CMS.DayaLoanContracts d
|
||||
INNER JOIN @FixUsers f ON f.UserId = d.UserId
|
||||
WHERE d.IsDeleted = 0
|
||||
AND d.IsProcessed = 0
|
||||
AND d.TransactionId IS NULL
|
||||
AND d.ProcessedDate IS NULL;
|
||||
|
||||
-- Sample after
|
||||
SELECT u.Id AS UserId,
|
||||
u.FirstName, u.LastName, u.Mobile,
|
||||
u.PackagePurchaseMethod,
|
||||
m.PurchaseMethod AS ClubPurchaseMethod
|
||||
FROM CMS.Users u
|
||||
INNER JOIN @FixUsers f ON f.UserId = u.Id
|
||||
LEFT JOIN CMS.ClubMemberships m ON m.UserId = u.Id AND m.IsDeleted = 0
|
||||
WHERE u.IsDeleted = 0
|
||||
ORDER BY u.Id;
|
||||
|
||||
-- Uncomment to apply:
|
||||
-- COMMIT;
|
||||
ROLLBACK;
|
||||
PRINT 'Rolled back (safety). Uncomment COMMIT and remove ROLLBACK to apply.';
|
||||
Reference in New Issue
Block a user