mirror of
https://github.com/JuniorDark/RustyHearts-API.git
synced 2026-05-07 14:11:44 -04:00
- Implemented authentication and billing routes for Jpn region. - Refactored and changed the project structure from CommonJS to ES Modules
145 lines
No EOL
4.2 KiB
Transact-SQL
145 lines
No EOL
4.2 KiB
Transact-SQL
-- ----------------------------
|
|
-- procedure structure for CreateAccount
|
|
-- ----------------------------
|
|
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[CreateAccount]') AND type IN ('P', 'PC', 'RF', 'X'))
|
|
DROP PROCEDURE[dbo].[CreateAccount]
|
|
GO
|
|
|
|
CREATE PROCEDURE [dbo].[CreateAccount]
|
|
@WindyCode varchar(50),
|
|
@AccountPwd varchar(255),
|
|
@Email varchar(255),
|
|
@RegisterIP varchar(16),
|
|
@ServerId int,
|
|
@ShopBalance Bigint
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE @Result varchar(20)
|
|
DECLARE @EmailExists int;
|
|
DECLARE @UsernameExists int;
|
|
DECLARE @WindyCodeExists int;
|
|
|
|
BEGIN TRY
|
|
BEGIN TRANSACTION
|
|
|
|
|
|
SELECT @EmailExists = COUNT(*) FROM AccountTable
|
|
WHERE Email = @Email;
|
|
SELECT @UsernameExists = COUNT(*) FROM AccountTable
|
|
WHERE WindyCode = @WindyCode;
|
|
SELECT @WindyCodeExists = COUNT(*) FROM RustyHearts_Auth.dbo.AuthTable
|
|
WHERE WindyCode = @WindyCode;
|
|
|
|
|
|
-- Check if account exists
|
|
IF @EmailExists > 0
|
|
SET @Result = 'EmailExists';
|
|
ELSE IF @UsernameExists > 0
|
|
SET @Result = 'UsernameExists';
|
|
ELSE IF @WindyCodeExists > 0
|
|
SET @Result = 'UsernameExists';
|
|
ELSE
|
|
SET @Result = 'NewUser';
|
|
|
|
-- Create new account
|
|
IF @Result = 'NewUser'
|
|
BEGIN
|
|
INSERT INTO AccountTable (WindyCode, AccountPwd, Email, RegisterIP, CreatedAt, LastLogin, IsLocked, LoginAttempts, LastLoginIP)
|
|
VALUES (@WindyCode, @AccountPwd, @Email, @RegisterIP, GETDATE(), GETDATE(), 0, 0, @RegisterIP);
|
|
|
|
INSERT INTO RustyHearts_Auth.dbo.AuthTable (WindyCode, world_id, AuthID, Tcount, online, CTime, BTime, LTime, IP, LCount, ServerIP, ServerType, HostID, DBCIndex, InquiryCount, event_inquiry, CashMileage, channelling, pc_room_point, externcash, mac_addr, mac_addr02, mac_addr03, second_pass)
|
|
VALUES (@WindyCode, 0, NEWID(), 0, '0', GETDATE(), GETDATE(), GETDATE(), @RegisterIP, 0, 0, 0, 0, 0, 5, 1, 0, 1, 0, 0, '00-00-00-00-00-00', '00-00-00-00-00-00', '00-00-00-00-00-00', '');
|
|
|
|
INSERT INTO CashTable (WindyCode, WorldId, Zen)
|
|
VALUES (@WindyCode, @ServerId, @ShopBalance);
|
|
|
|
|
|
SET @Result = 'AccountCreated';
|
|
|
|
END;
|
|
|
|
COMMIT TRANSACTION;
|
|
END TRY
|
|
BEGIN CATCH
|
|
ROLLBACK TRANSACTION;
|
|
SET @Result = 'TransactionFailed';
|
|
END CATCH
|
|
|
|
SELECT @Result as Result;
|
|
|
|
END
|
|
GO
|
|
|
|
|
|
-- ----------------------------
|
|
-- procedure structure for SetAccountVerificationCode
|
|
-- ----------------------------
|
|
IF EXISTS (SELECT * FROM sys.all_objects WHERE object_id = OBJECT_ID(N'[dbo].[SetAccountVerificationCode]') AND type IN ('P', 'PC', 'RF', 'X'))
|
|
DROP PROCEDURE[dbo].[SetAccountVerificationCode]
|
|
GO
|
|
|
|
CREATE PROCEDURE [dbo].[SetAccountVerificationCode]
|
|
@VerificationCode varchar(10),
|
|
@Email varchar(255),
|
|
@ExpirationTime DATETIME
|
|
AS
|
|
BEGIN
|
|
SET NOCOUNT ON;
|
|
|
|
DECLARE @Result varchar(20)
|
|
DECLARE @AccountExists int;
|
|
DECLARE @VerificationCodeCount int;
|
|
|
|
BEGIN TRY
|
|
BEGIN TRANSACTION
|
|
|
|
SELECT @AccountExists = COUNT(*) FROM AccountTable
|
|
WHERE Email = @Email;
|
|
|
|
|
|
-- Check if account exists
|
|
IF @AccountExists > 0
|
|
BEGIN
|
|
SET @Result = 'AccountExists';
|
|
COMMIT TRANSACTION;
|
|
SELECT @Result as Result;
|
|
RETURN;
|
|
END
|
|
|
|
IF @Result = 'AccountDontExists'
|
|
-- Retrieve count of existing verification codes for the user
|
|
SELECT @VerificationCodeCount = COUNT(*) FROM VerificationCode
|
|
WHERE Email = @Email;
|
|
|
|
-- Check if count of existing verification codes is less than 5
|
|
IF @VerificationCodeCount < 5
|
|
BEGIN
|
|
-- Insert new verification code
|
|
INSERT INTO VerificationCode (VerificationCode, Email, ExpirationTime, Type)
|
|
VALUES (@VerificationCode, @Email, @ExpirationTime, 'Account');
|
|
SET @Result = 'Success';
|
|
END
|
|
ELSE
|
|
BEGIN
|
|
-- Delete all existing verification codes for the user
|
|
DELETE FROM VerificationCode WHERE Email = @Email;
|
|
|
|
-- Insert new verification code
|
|
INSERT INTO VerificationCode (VerificationCode, Email, ExpirationTime, Type)
|
|
VALUES (@VerificationCode, @Email, @ExpirationTime, 'Account');
|
|
SET @Result = 'Success';
|
|
END;
|
|
|
|
COMMIT TRANSACTION;
|
|
END TRY
|
|
BEGIN CATCH
|
|
ROLLBACK TRANSACTION;
|
|
SET @Result = 'TransactionFailed';
|
|
END CATCH
|
|
|
|
SELECT @Result as Result;
|
|
|
|
END
|
|
GO |