⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 userlogin.cs

📁 最好用的站点内容管理系统 全部源代码都有
💻 CS
📖 第 1 页 / 共 2 页
字号:
//======================================================
//==     (c)2008 aspxcms inc by NeTCMS v1.0              ==
//==          Forum:bbs.aspxcms.com                   ==
//==         Website:www.aspxcms.com                  ==
//======================================================
using System;
using System.Text;
using System.Collections;
using System.Data;
using System.Data.SqlClient;
using System.Text.RegularExpressions;
using NetCMS.DALFactory;
using NetCMS.Model;
using NetCMS.DALProfile;
using NetCMS.Config;
using NetCMS.Common;

namespace NetCMS.DALSQLServer
{
    public class UserLogin : DbBase, IUserLogin
    {
        protected struct AdminDataInfo
        {
            public byte isSuper;
            public string adminGroupNumber;
            public int ID;
            public byte isChannel;
        }
        protected struct UserLoginSucceedInfo
        {
            public string UserNum;
            public string IP;
            public int IPoint;
            public int GPoint;
            public int CPoint;
            public int APoint;
        }
        private static readonly string SQL_SYS = "select islock,EmailATF,isMobile,isIDcard,UserGroupNumber from " + DBConfig.TableNamePrefix + "sys_User where UserNum=@UserNum";
        private static readonly string SQL_PRAM = "select top 1 IPLimt,returnemail,returnmobile,LoginLock,cPointParam,aPointparam from " + DBConfig.TableNamePrefix + "sys_PramUser";
        private static readonly string SQL_ADMIN = "select Iplimited,isLock,isSuper,adminGroupNumber,[ID],[isChannel] from " + DBConfig.TableNamePrefix + "sys_admin where UserNum=@UserNum";
        private static readonly string SQL_USERGROUP = "select IsCert,LoginPoint,Rtime from " + DBConfig.TableNamePrefix + "user_Group where GroupNumber=@GroupNumber";
        private static readonly string SQL_DEFUSERGROUP = "select top 1 a.IsCert,a.LoginPoint,a.Rtime from " + DBConfig.TableNamePrefix + "user_Group a inner join " + DBConfig.TableNamePrefix + "sys_PramUser b on a.GroupNumber=b.RegGroupNumber";

        EnumLoginState IUserLogin.CheckUserLogin(string UserNum, bool IsCert)
        {
            SqlConnection cn = new SqlConnection(DBConfig.CmsConString);
            try
            {
                cn.Open();
                return CheckUserLogin(cn, UserNum, IsCert);
            }
            catch
            {
                return EnumLoginState.Err_DbException;
            }
            finally
            {
                if (cn.State == ConnectionState.Open)
                    cn.Close();
            }
        }
        protected EnumLoginState CheckUserLogin(SqlConnection cn, string UserNum, bool IsCert)
        {
            #region 局部变量
            string LimitedIP = string.Empty;
            bool bisLock = true;
            bool bEmailATF = false;
            bool bisMobile = false;
            string sUserGroupNumber = string.Empty;
            bool bisIDcard = false;
            #endregion 局部变量
            bool flag = true;
            IDataReader rd = this.GetSysUser(cn, UserNum);
            if (rd.Read())
            {
                #region 取值
                if (!rd.IsDBNull(0) && rd.GetByte(0) == 0X0)
                    bisLock = false;
                if (!rd.IsDBNull(1) && rd.GetByte(1) != 0X0)
                    bEmailATF = true;
                if (!rd.IsDBNull(2) && rd.GetByte(2) != 0X0)
                    bisMobile = true;
                if (!rd.IsDBNull(3) && rd.GetByte(3) != 0X0)
                    bisIDcard = true;
                if (!rd.IsDBNull(4))
                    sUserGroupNumber = rd.GetString(4);
                flag = false;
                #endregion 取值
            }
            rd.Close();
            if (flag)
                return EnumLoginState.Err_UserNumInexistent;
            if (bisLock)
                return EnumLoginState.Err_Locked;
            if (LimitedIP.Trim() != string.Empty && !Public.ValidateIP(LimitedIP))
                return EnumLoginState.Err_IPLimited;
            bool bReturnEmail = false;
            bool bReturnMobile = false;
            rd = GetParamUser(cn);
            if (rd.Read())
            {
                if (!rd.IsDBNull(0))
                    LimitedIP = rd.GetString(0);
                if (!rd.IsDBNull(1) && rd.GetByte(1) != 0X00)
                    bReturnEmail = true;
                if (!rd.IsDBNull(2) && rd.GetByte(2) != 0X00)
                    bReturnMobile = true;
            }
            rd.Close();
            if (bReturnEmail && !bEmailATF)
                return EnumLoginState.Err_UnEmail;
            if (bReturnMobile && !bisMobile)
                return EnumLoginState.Err_UnMobile;
            if (IsCert)
            {
                rd = GetUserGroupInfo(cn, sUserGroupNumber);
                if (rd.Read())
                {
                    if (!bisIDcard && rd["IsCert"] != DBNull.Value && Convert.ToInt32(rd["IsCert"]) != 0X00)
                    {
                        rd.Close();
                        return EnumLoginState.Err_UnCert;
                    }
                }
                rd.Close();
                return EnumLoginState.Succeed;
            }
            else
            {
                return EnumLoginState.Succeed;
            }
        }
        protected EnumLoginState CheckAdminLogin(SqlConnection cn, string UserNum, out AdminDataInfo info)
        {
            info.adminGroupNumber = string.Empty;
            info.ID = 0;
            info.isChannel = 0;
            info.isSuper = 0;
            string LimitedIP = string.Empty;
            bool bisLock = true;
            bool flag = true;
            IDataReader rd = GetSysUser(cn, UserNum);
            if (rd.Read())
            {
                if (!rd.IsDBNull(0) && rd.GetByte(0) == 0X0)
                    bisLock = false;
                flag = false;
            }
            rd.Close();
            if (flag)
                return EnumLoginState.Err_UserNumInexistent;
            if (bisLock)
                return EnumLoginState.Err_Locked;
            flag = true;
            bisLock = true;
            rd = DbHelper.ExecuteReader(cn, CommandType.Text, SQL_ADMIN, new SqlParameter("@UserNum", UserNum));
            if (rd.Read())
            {
                if (!rd.IsDBNull(0)) LimitedIP = rd.GetString(0);
                if (!rd.IsDBNull(1) && rd.GetByte(1) == 0X0)
                    bisLock = false;
                if (!rd.IsDBNull(2))
                    info.isSuper = rd.GetByte(2);
                if (!rd.IsDBNull(3))
                    info.adminGroupNumber = rd.GetString(3);
                info.ID = rd.GetInt32(4);
                if (!rd.IsDBNull(5))
                    info.isChannel = rd.GetByte(5);
                flag = false;
            }
            rd.Close();
            if (flag)
                return EnumLoginState.Err_AdminNumInexistent;
            if (bisLock)
                return EnumLoginState.Err_AdminLocked;
            if (LimitedIP.Trim() != string.Empty && !Public.ValidateIP(LimitedIP))
                return EnumLoginState.Err_IPLimited;
            return EnumLoginState.Succeed;
        }

        EnumLoginState IUserLogin.CheckAdminLogin(string UserNum)
        {
            SqlConnection cn = new SqlConnection(NetCMS.Config.DBConfig.CmsConString);
            try
            {
                cn.Open();
                AdminDataInfo info;
                return CheckAdminLogin(cn, UserNum, out info);
            }
            catch
            {
                return EnumLoginState.Err_DbException;
            }
            finally
            {
                if (cn.State == ConnectionState.Open)
                    cn.Close();
            }
        }
        protected IDataReader GetParamUser(SqlConnection cn)
        {
            return DbHelper.ExecuteReader(cn, CommandType.Text, SQL_PRAM, null);
        }
        protected IDataReader GetSysUser(SqlConnection cn, string UserNum)
        {
            SqlParameter Param = new SqlParameter("@UserNum", UserNum);
            return DbHelper.ExecuteReader(cn, CommandType.Text, SQL_SYS, Param);
        }
        protected IDataReader GetUserGroupInfo(SqlConnection cn, string GroupNum)
        {
            SqlParameter Param = new SqlParameter("@GroupNumber", GroupNum);
            SqlDataReader rd = (SqlDataReader)DbHelper.ExecuteReader(cn, CommandType.Text, SQL_USERGROUP, Param);
            if (!rd.HasRows)
            {
                rd.Close();
                rd = (SqlDataReader)DbHelper.ExecuteReader(cn, CommandType.Text, SQL_DEFUSERGROUP, null);

            }
            return rd;
        }
        protected string GetAdminPopList(SqlConnection cn, int id)
        {
            string Sql = "select PopList from " + Pre + "sys_Admin where [ID]=" + id;
            return Convert.ToString(DbHelper.ExecuteScalar(cn, CommandType.Text, Sql, null));
        }
        protected IDataReader GetAdminGroupList(SqlConnection cn, string GroupNum)
        {
            string Sql = "select ClassList,SpecialList,channelList from " + Pre + "sys_admingroup where adminGroupNumber=@adminGroupNumber";
            SqlParameter Param = new SqlParameter("@adminGroupNumber", GroupNum);
            return DbHelper.ExecuteReader(cn, CommandType.Text, Sql, Param);
        }
        /// <summary>
        /// 权限处理
        /// </summary>
        /// <param name="PopCode">权限代码</param>
        /// <param name="ClassID">栏目ID</param>
        /// <param name="SpecialID">专题ID</param>
        /// <param name="SiteID">频道ID</param>
        /// <returns></returns>
        EnumLoginState IUserLogin.CheckAdminAuthority(string PopCode, string ClassID, string SpecialID, string SiteID)
        {
            string UserNum = NetCMS.Global.Current.UserNum;
            SqlConnection cn = new SqlConnection(DBConfig.CmsConString);
            try
            {
                cn.Open();
                AdminDataInfo info;
                EnumLoginState state = CheckAdminLogin(cn, UserNum, out info);
                if (state != EnumLoginState.Succeed)
                    return state;
                if (info.isSuper == 0X01)
                    return EnumLoginState.Succeed;
                string PopList = GetAdminPopList(cn, info.ID);
                if (PopList.IndexOf(PopCode) < 0)
                    return EnumLoginState.Err_NoAuthority;
                string ClassList = string.Empty;
                string SpecialList = string.Empty;
                string SiteList = string.Empty;
                IDataReader rd = GetAdminGroupList(cn, info.adminGroupNumber);
                if (rd.Read())
                {
                    if (!rd.IsDBNull(0))
                        ClassList = rd.GetString(0);
                    if (!rd.IsDBNull(1))
                        SpecialList = rd.GetString(1);
                    if (!rd.IsDBNull(2))
                        SiteList = rd.GetString(2);
                }
                rd.Close();
                if (ClassList.IndexOf(ClassID) >= 0 && SpecialList.IndexOf(SpecialID) >= 0 && SiteList.IndexOf(SiteID) >= 0)
                    return EnumLoginState.Succeed;
                else
                    return EnumLoginState.Err_NoAuthority;
            }
            catch
            {
                return EnumLoginState.Err_DbException;
            }
            finally
            {
                if (cn.State == ConnectionState.Open)
                    cn.Close();
            }
        }
        EnumLoginState IUserLogin.PersonLogin(string UserName, string PassWord, out GlobalUserInfo info)
        {
            info = new GlobalUserInfo(string.Empty, string.Empty, string.Empty);
            if (UserName == null || UserName.Trim() == string.Empty || PassWord == null || PassWord.Trim() == string.Empty)
            {
                return EnumLoginState.Err_UserNameOrPwdError;
            }
            SqlConnection cn = new SqlConnection(DBConfig.CmsConString);
            try
            {
                string LogIP = NetCMS.Common.Public.getUserIP();
                DateTime Now = DateTime.Now;
                cn.Open();
                #region 基本信息表
                string UserNum = string.Empty;
                string SiteID = string.Empty;
                string PWD = string.Empty;
                byte IsLock = 0X01;
                int ipnt = 0;
                int gpnt = 0;
                int cpnt = 0;
                int apnt = 0;
                string sUserGroup = string.Empty;
                DateTime dtUserRegDate = DateTime.Now;
                SqlParameter Param = new SqlParameter("@UserName", UserName);
                string Sql = "select UserPassword,UserNum,islock,SiteID,UserGroupNumber,RegTime,iPoint,gPoint,cPoint,aPoint from " + Pre + "sys_User where UserName=@UserName";
                bool bexist = false;

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -