1
yhj
2024-07-24 5e5d945e91568b973faa27d8ab0bcef99fc4a6c5
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
#region
 
using System;
using CSFrameworkV5.Common;
using CSFrameworkV5.Core;
using CSFrameworkV5.Core.SystemSecurity;
using CSFrameworkV5.DataAccess;
using CSFrameworkV5.Models;
 
#endregion
 
///*************************************************************************/
///*
///* 文件名    :LoginAuthorization.cs      
///
///* 程序说明  : 系统登录策略
///               1.系统内部用户授权 2.Novell网用户授权 3.Windows域用户授权
///               
///* 原创作者  :www.csframework.com 
///* Copyright 2006-2021 wwww.csframework.com, 保留所有权利.
///*
///**************************************************************************/
 
namespace CSFrameworkV5.Business.BLL_Permission
{
    /// <summary>
    ///     系统内部用户授权
    /// </summary>
    public class LoginSystemAuth : ILoginAuthorization
    {
        /// <summary>
        ///     登录
        /// </summary>
        /// <param name="loginUser">录入的用户登录资料</param>
        /// <returns></returns>
        public bool Login(LoginUser loginUser)
        {
            //调用数据访问层的接口检查用户登录
            //用户登录前尚未创建Loginer对象,所有传null值
            var bridge = BridgeFactory.CreateUserBridge();
            var dt = bridge.Login(loginUser);
            if (dt == null || dt.Rows.Count == 0)
                throw new CustomException("登录失败,请检查用户名和密码!");
 
            var row = dt.Rows[0];
 
            //用户实例,登录成功
            var user = new Loginer();
            user.Account = ConvertEx.ToString(row[tb_MyUser.Account]);
            user.Password = ConvertEx.ToString(row[tb_MyUser.Password]);
            user.AccountName = ConvertEx.ToString(row[tb_MyUser.UserName]);
            user.FlagAdmin = ConvertEx.ToString(row[tb_MyUser.FlagAdmin]);
            user.DatasetIDs = ConvertEx.ToString(row[tb_MyUser.DataSets]);
            user.LoginTime = DateTime.Now;
            user.IP = loginUser.IP;
            user.MAC = loginUser.MAC;
            user.DBID = loginUser.DBID;
            user.DBName = loginUser.DBName;
 
            user.Org1 = ConvertEx.ToString(row[tb_MyUser.Org1]);
            user.Org2 = ConvertEx.ToString(row[tb_MyUser.Org2]);
 
            Loginer.CurrentUser = user; //保存当前用户
 
            //登录成功保存当前授权模式
            SystemAuthentication.Current = this;
 
            //获取当前用户的账套信息
            if (BridgeFactory.IsADODirect)
                DatabaseProvider.LoadDatabase(Loginer.CurrentUser.DatasetIDs);
 
            return true;
        }
 
        /// <summary>
        ///     登出
        /// </summary>
        public void Logout()
        {
            try
            {
                var user = BridgeFactory.CreateUserBridge();
                user.Logout(new LoginUser(Loginer.CurrentUser));
            }
            catch
            {
                LogUserOperate.Write("登录发生错误!");
            }
        }
 
        public bool SupportLogout => true;
    }
}