USE [Account]
GO
/****** Object: StoredProcedure [dbo].[SP_ACC_LOGIN] Script Date: 04/05/2014 05:32:20 ******/
SET ANSI_NULLS ON
GO
SET QUOTED_IDENTIFIER ON
GO
/************************************************** ****************************
? ? : dbo.SP_ACC_LOGIN
? ? : ?? ???
???? :
???? : @sp_rtn
0 : ??.
-1 : ????? ???.
-2 : ????? ???? ???.
-3 : ?????? ?????? ??? ?? ??.
-4 : ???? ??? ???. (?? ????)
-5 : ????? ?? ??.
-6 : ??? ??? ????.
-7 : ???? ???? ??.
-8 : ?????.
-10 : Update Lock ??(DB ??)
-11 : ??IP??.
-12 : ???? ?? 5??? ??? ?? ?? IP.
-20 : DB Error
-21 : ???? ????
-22 : ???? ???
Ver Date Author Description
--------- ---------- -------------- ------------------------------------
1.0 2004-10-11 ??? 1. ?? ???
1.1 2005-09-07 ??? 1. ??IP?? ??? ??.
1.2 2005-09-12 ??? 1. IP????(@ip_addr_tag) OUTPUT???? ??.
(PC? IP??? ???? ?? ?)
1.3 2005-11-14 ??? 1. ????????Key, PC?????,
PC? ???? ??.
2. PC? IP???? ??(FN_IsPCBangIP)?
SP_GET_PCBANG_INFO_R? ??.
1.4 2006-01-04 ??? 1. ???? ???? ??? ??
1.5 2006-01-11 ??? 1. ?? ????(-4) : ???? (RollBack, Return ??)
1.6 2007.02.05 CHOI JI HWAN 1. modify
user_pwd parameter.
before : varchar(20)
after : varchar(64)
1.7 2007.02.14 CHOI JI HWAN 1. ????? ip ?? ?? ??.
2. ???? MD5 ???
user_pwd : VARCHAR(20) -> VARCHAR(64)
1.8 2007.02.15 Han JI wook 1. User_ID -> Lower Casting
1.9 2007.02.20 Han JI wook 1. User_ID -> Lower Casting Cancel
2.0 2007.04.04 Choi JI Hwan 1. Change @sp_rtn value
Invalid passowrd : old=-2 >> new=-1
2.1 2007.04.17 Han JI Wook 1. Add Password Change Check
2.2 2007.04.24 CHOI JI HWAN 1. ???? ???? ??? ? ??? 5??? ???? ?? IP?? ???? ??????.
2.3 2007.04.26 CHOI JI HWAN 1. IP? ?? ?????? 30??? ??.
************************************************** ****************************/
ALTER PROCEDURE [dbo].[SP_ACC_LOGIN]
user_id varchar(40) , -- ????ID
user_pwd varchar(64) , -- ???? ????
LogiN_flag int , -- ??????
user_ip_addr varbinary(4) , -- ???IP??
user_no varchar(14) OUTPUT , -- ????????
Session_id int OUTPUT , -- ????ID
Teen_tag int OUTPUT , -- ?????? (0:18???, 1:18???)
@ip_addr_tag int OUTPUT , -- IP??????(0:??, 1
C?)
@o_ac_conn_no char(20) OUTPUT , -- ????????Key -> ??
@o_pcbang_no varchar(14) OUTPUT , -- PC? ????. -> ( 2005-11-11 )??
@o_pc_agency_no varchar(5) OUTPUT , -- PC? ???? -> ??
@a int OUTPUT ,
@b int OUTPUT ,
@sp_rtn int OUTPUT -- ??? ?? (0:??)
AS
DECLARE @v_user_pwd varchar(64)
DECLARE @v_login_flag int
DECLARE @v_user_no varchar(14)
DECLARE @v_resident_no varchar(13)
DECLARE @v_login_tag char(1)
DECLARE @v_user_age int
DECLARE @ipt_time datetime
DECLARE
conn_rtn int
DECLARE @ip_tag int
DECLARE
Company_ip varbinary(3)
DECLARE @v_server_id varchar(3)
DECLARE @v_user_sex varchar(1)
DECLARE
Rowcnt int
--// ????
DECLARE @o_p_step_no int --????
DECLARE @o_p_reason_sort varchar(2) --??????
DECLARE @o_p_expire_time datetime --??????
DECLARE @v_lo_block_tag varchar(1) --???????
DECLARE @o_wr_block_tag varchar(1) --??????
DECLARE @v_in_sp_rtn int
DECLARE @v_bigint_ip bigint
DECLARE @v_login_failure_count int
DECLARE @v_onlineIdCount int
BEGIN
SET LOCK_TIMEOUT 1000
SET @v_bigint_ip = CAST
user_ip_addr as BIGINT)
SET @ipt_time = GetDate()
SET
conn_rtn = 0
SET
user_no = '0000000000'
SET
Session_id = 0
SET
Teen_tag = 0
SET @ip_addr_tag = 0
SET @sp_rtn = 0
SET @o_ac_conn_no = '0000000000000000'
SET @o_pcbang_no = ''
SET @o_pc_agency_no = ''
SET @a = 0
SET @b = 0
--************************************
-- ?????? IP?? Start
--************************************
SELECT @ip_tag = dbo.FN_IsBlockIP(
user_ip_addr )
IF @ip_tag = 1
BEGIN
SET @sp_rtn = -6
RETURN
END
--************************************
-- ?????? IP?? End
--************************************
--************************************
-- ??IP ?? ?? (2005.08.17 - Hanjiwook)
--************************************
IF dbo.FN_ExistBanIP
user_ip_addr) = 1
BEGIN
SET @sp_rtn = -11
RETURN
END
--************************************************** **********
-- ??? ?IP?? 5??? ??? ???? ??? ??.(CHOI JI HWAN - 2007.04.24)
--************************************************** **********
EXEC dbo.SP_LOGIN_FAILURE_LOG_GetCountByIp @ipt_time
,
user_ip_addr
, @v_login_failure_count OUTPUT
, @v_in_sp_rtn OUTPUT
IF ( @v_login_failure_count >= 5 )
BEGIN
SET @sp_rtn = -12
RETURN
END
--************************************************** **********
-- IP? ?? ?????? 30??? ??. (CHOI JI HWAN - 2007.04.26)
--************************************************** **********
SELECT @v_onlineIdCount = COUNT(*)
FROM dbo.user_profile WITH(NOLOCK)
WHERE login_flag > 0
AND user_ip_addr =
user_ip_addr
--AND login_tag = 'Y'
IF ( @v_onlineIdCount >= 30 )
BEGIN
SET @sp_rtn = -13
RETURN
END
--************************************************** **********
BEGIN TRANSACTION
--// Login_Tag
--// 'Y' : normal, 'P' : Password Not Change
SELECT @v_user_no = user_no,
@v_user_pwd = isnull(user_pwd, ''),
@v_login_flag = login_flag,
@v_login_tag = login_tag,
@v_resident_no = resident_no
FROM dbo.user_profile WITH(UPDLOCK)
WHERE user_id =
user_id
AND login_tag IN ('Y', 'P')
SET
Rowcnt =
RowCOUNT
IF @@ERROR <> 0
BEGIN
ROLLBACK TRANSACTION
SET @sp_rtn = -10
RETURN
END
--************************************
-- ???? Check
--************************************
--// 1. ???? ?? ??
IF
Rowcnt = 0
BEGIN
ROLLBACK TRANSACTION
SET @sp_rtn = -1 --old : -1
RETURN
END
--IF ISNULL(dbo.FN_CertifyIpPwd(
user_ip_addr,
user_pwd ), 0) <> 1 --GM : no password check.
--BEGIN
-- --// 2. ???? ???? ??
-- SELECT
user_pwd = isnull
user_pwd, '')
-- IF @v_user_pwd <>
user_pwd or
user_pwd = ''
-- BEGIN
-- ROLLBACK TRANSACTION
-- SET @sp_rtn = -1 --old : -2
-- EXEC dbo.SP_LOGIN_FAILURE_LOG_C
user_ip_addr,
user_id,
user_pwd, @v_user_no,
LogiN_flag, @sp_rtn, @v_in_sp_rtn OUTPUT
-- RETURN
-- END
-- --// 3.1 2006.05.01 ?? ??????? ???? ?? ?? ('P')
-- --// 3.2 ?????? ???? ???? login_tag? 'Y'? ???.
-- IF @v_login_tag = 'P'
-- BEGIN
-- ROLLBACK TRANSACTION
-- SET @sp_rtn = -22
-- RETURN
-- END
--END
/*
--// 3.1 ?????? ?????? ????? ??
--// 3.2 ?????? ???????? login_tag? 'Y'? ???.
IF @v_login_tag = 'C'
BEGIN
ROLLBACK TRANSACTION
SET @sp_rtn = -3
RETURN
END
*/
--// 4. Dont forget fix
--IF ( (@v_login_flag <> 0) AND (@v_login_flag =
LogiN_flag) ) BEGIN
-- --// ROLLBACK TRANSACTION
-- SET
Session_id = @v_login_flag
-- SET @sp_rtn = -4
-- --// RETURN
--END
IF ( (@v_login_flag <> 0) AND (@v_login_flag <>
LogiN_flag) ) BEGIN
ROLLBACK TRANSACTION
SET
Session_id = @v_login_flag
SET @sp_rtn = -4
RETURN
END
--************************************
-- ?????(????) ??
--************************************
EXEC dbo.MB_USR_PUN_CheckBlock_R @v_user_no , --????
@o_p_step_no OUTPUT, --????
@o_p_reason_sort OUTPUT, --??????
@o_p_expire_time OUTPUT, --??????
@v_lo_block_tag OUTPUT, --???????(Y=??, N=?????)
@o_wr_block_tag OUTPUT, --????(????? ????)
@v_in_sp_rtn OUTPUT --????(0:??)
IF @v_in_sp_rtn <> 0 OR @@Error <> 0
BEGIN
ROLLBACK TRANSACTION
SET @sp_rtn = -7
RETURN
END
IF Upper(@v_lo_block_tag) = 'Y' --?????? ??.
BEGIN
ROLLBACK TRANSACTION
SET @sp_rtn = -8
RETURN
END
SET
user_no = @v_user_no
SET @v_user_age = dbo.FN_ResidentNoToAge(@v_resident_no,getDate())
SET @v_server_id = dbo.FN_LoginFlagToServerID
LogiN_flag)
SET @v_user_sex = dbo.FN_ResidentNoToSex(@v_resident_no)
SET
Teen_tag = CASE
WHEN @v_user_age < 18 THEN 1
ELSE 0
END
--// ????? ??
UPDATE dbo.user_profile
SET login_flag =
LogiN_flag ,
login_time = @ipt_time ,
user_ip_addr=
user_ip_addr ,
server_id = @v_server_id
WHERE user_no =
user_no
AND login_flag = @v_login_flag
IF (@@ERROR <> 0 or
RowCOUNT <> 1)
BEGIN
ROLLBACK TRANSACTION
SET @sp_rtn = -5
RETURN
END
--// IP???? ?? ??.
EXEC dbo.SP_GET_PCBANG_INFO_R
user_ip_addr , -- IP??.
@o_pcbang_no OUTPUT , -- PC? ????.
@o_pc_agency_no OUTPUT , -- PC? ????.
@ip_addr_tag OUTPUT , -- IP??????(0:??, 1
C?)
NULL -- @o_sp_rtn
SELECT @ip_addr_tag = IsNull(@ip_addr_tag, 0)
-------------------------------------------------------------------
-- ???? ???? ??
EXEC dbo.SP_ACNT_CONNLOG_C
user_no ,
LogiN_flag ,
user_ip_addr ,
@ipt_time ,
@o_pcbang_no ,
@o_pc_agency_no ,
@v_user_age ,
@v_user_sex ,
@o_ac_conn_no OUTPUT ,
conn_rtn OUTPUT
IF @@ERROR <> 0 OR
conn_rtn <> 0 BEGIN
IF @@TRANCOUNT > 0
ROLLBACK TRANSACTION
SET @sp_rtn = -20
RETURN
END
COMMIT TRANSACTION
--// SET @sp_rtn = 0
RETURN
END