Пример #1
0
        public void ChangeVaultUserInfo(User user, VaultServer server)
        {
            var accountName = GetAccountName(user);
            var app         = MFServerUtility.ConnectToServer(server.AdminName, server.AdminPwd,
                                                              MFServerUtility.GetVaultServerLocalIp(server), server.ServerPort);

            try
            {
                var la = MfUserUtils.GetLoginAccount(app, accountName);
                if (la == null)
                {
                    return;
                }
                var needChange = false;
                if (la.FullName != user.FullName)
                {
                    needChange  = true;
                    la.FullName = user.FullName;
                }
                if (la.EmailAddress != user.Email)
                {
                    la.EmailAddress = user.Email;
                    needChange      = true;
                }
                if (needChange)
                {
                    app.LoginAccountOperations.ModifyLoginAccount(la);
                }
            }
            finally
            {
                app.Disconnect();
            }
        }
Пример #2
0
        /// <summary>
        /// 在指定的MFiles服务器中添加登陆账户
        /// </summary>
        /// <param name="user">用户对象</param>
        /// <param name="server">MFiles Server对象 </param>
        internal void CreateMFilesLoginAccount(User user, VaultServer server,
                                               MFLoginAccountType accountType, MFLicenseType licenseType)
        {
            var app = MFServerUtility.ConnectToServer(server.AdminName, server.AdminPwd,
                                                      MFServerUtility.GetVaultServerLocalIp(server), server.ServerPort);

            try
            {
                var accountName = GetAccountName(user);
                var hasAccount  = MfUserUtils.HasLoginAccount(app, accountName);
                if (!hasAccount)
                {
                    var account  = new LoginAccount();
                    var fullName = user.FullName;
                    if (String.IsNullOrEmpty(fullName))
                    {
                        fullName = user.UserName;
                    }
                    account.Set(accountType, user.Domain, user.UserName,
                                MFLoginServerRole.MFLoginServerRoleLogIn, fullName, user.Email, licenseType);
                    app.LoginAccountOperations.AddLoginAccount(account);
                }
            }
            finally
            {
                app.Disconnect(); //todo 多线程时是否对其他会话有影响
            }
        }
Пример #3
0
        public UserInfo GetUserInfo(VaultServer server, string userName)
        {
            var app = MFServerUtility.ConnectToServer(server);

            try
            {
                var la = MfUserUtils.GetLoginAccount(app, userName);
                if (la != null)
                {
                    if (String.IsNullOrEmpty(la.FullName))
                    {
                        la.FullName = userName;
                    }
                    return(new UserInfo {
                        UserName = userName, Email = la.EmailAddress, Fullname = la.FullName
                    });
                }
            }
            catch (Exception ex)
            {
                Log.Error(String.Format("获取登录账户({0})异常:" + ex.Message, userName), ex);
            }
            finally
            {
                app.Disconnect();
            }

            return(null);
        }
Пример #4
0
        public void DisableVaultUser(string userName, MFilesVault vault)
        {
            var mVault = MFServerUtility.GetVault(vault);

            if (!HasVaultUser(userName, vault))
            {
                Log.Error(string.Format("用户({0})不存在于vault({1}),vaultname={2},中!", userName, vault.Guid, mVault.Name));
                return;
            }
            MfUserUtils.DisableVaultUser(mVault, userName);
        }
Пример #5
0
 private string GetUsername(Vault vault, int mfUserId)
 {
     try
     {
         var user = vault.UserOperations.GetUserAccount(mfUserId);
         return(MfUserUtils.GetUserNameWithoutDomain(user.LoginName));
     }
     catch
     {
         return(String.Empty);
     }
 }
Пример #6
0
        public void EnableVaultUser(string userName, MFilesVault vault)
        {
            var mVault = MFServerUtility.GetVault(vault);

            if (!HasVaultUser(userName, vault))
            {
                var err = string.Format("用户{0}不存在于vault{1},vaultname={2},中!", userName, vault.Guid, mVault.Name);
                Log.Error(err);
                throw new Exception(err);
            }
            MfUserUtils.EnableVaultUser(mVault, userName);
        }
Пример #7
0
        public MfContact GetContact(MFilesVault vault, MetadataAliases aliases, string userName)
        {
            var mfVault = MFServerUtility.GetVault(vault);
            var userId  = MfUserUtils.GetUserAccount(mfVault, userName);

            if (userId == null)
            {
                return(null);
            }
            var uid = userId.Value; //userid

            return(GetContactByUserId(mfVault, aliases, uid));
        }
Пример #8
0
        public int GetUserId(Vault vault, string userName)
        {
            var userid = -1;
            var users  = vault.UserOperations.GetUserAccounts();
            var un     = MfUserUtils.GetUserNameWithoutDomain(userName).ToUpper();

            foreach (UserAccount ua in users)
            {
                var un0 = MfUserUtils.GetUserNameWithoutDomain(ua.LoginName).ToUpper();
                if (un0 == un)
                {
                    userid = ua.ID;
                    break;
                }
            }
            return(userid);
        }
Пример #9
0
        private bool CheckNoticeInOneVault(Vault vault, long currentuserid)
        {
            //var currentuserid = long.Parse(User.Identity.GetUserId());
            var loginName = _userService.GetUserById(currentuserid).GetAccountName();
            var mfuserid  = MfUserUtils.GetUserAccount(vault, loginName);

            Log.Info(string.Format("mfuserid:{0}", mfuserid));
            var ClassNotification =
                vault.GetMetadataStructureItemIDByAlias(MFMetadataStructureItem.MFMetadataStructureItemClass,
                                                        "ClassNotification");
            var pos = vault.Name.LastIndexOf('-');

            if (pos < 1)
            {
                pos = vault.Name.Length;
            }
            var tasktitle = vault.Name.Substring(0, pos);

            if (mfuserid != null)
            {
                var scs = new SearchConditions();
                {
                    var sc = new SearchCondition();
                    sc.ConditionType = MFConditionType.MFConditionTypeEqual;
                    sc.Expression.DataPropertyValuePropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefClass;
                    sc.TypedValue.SetValueToLookup(new Lookup {
                        Item = ClassNotification
                    });
                    scs.Add(-1, sc);
                }
                {
                    var sc = new SearchCondition();
                    sc.ConditionType = MFConditionType.MFConditionTypeEqual;
                    sc.Expression.DataPropertyValuePropertyDef = (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefAssignedTo;
                    sc.TypedValue.SetValueToLookup(new Lookup {
                        Item = (int)mfuserid
                    });
                    scs.Add(-1, sc);
                }
                var ovs = vault.ObjectSearchOperations.SearchForObjectsByConditionsEx(scs,
                                                                                      MFSearchFlags.MFSearchFlagNone, false, 0, 0).ObjectVersions.Count;
                return(ovs > 0);
            }
            return(false);
        }
Пример #10
0
        public void RemoveUserFromGroup(MFilesVault vault, string userName, params int[] groupIds)
        {
            var ovault = MFServerUtility.GetVault(vault);
            var userid = -1;
            var users  = ovault.UserOperations.GetUserAccounts();
            var un     = MfUserUtils.GetUserNameWithoutDomain(userName).ToUpper();

            foreach (UserAccount ua in users)
            {
                var un0 = MfUserUtils.GetUserNameWithoutDomain(ua.LoginName);
                if (un0.ToUpper() == un)
                {
                    userid = ua.ID;
                    break;
                }
            }
            foreach (var groupId in groupIds)
            {
                RemoveUserFromGroupById(ovault, userid, groupId);
            }
        }
Пример #11
0
        public void CreateMFilesLoginAccount(User user, VaultServer server)
        {
            var app = MFServerUtility.ConnectToServer(server.AdminName, server.AdminPwd, MFServerUtility.GetVaultServerLocalIp(server), server.ServerPort);

            try
            {
                var has = MfUserUtils.HasLoginAccount(app, GetAccountName(user));
                if (!has)
                {
                    var accType = MFLoginAccountType.MFLoginAccountTypeWindows;
                    if (string.IsNullOrEmpty(user.Domain))
                    {
                        accType = MFLoginAccountType.MFLoginAccountTypeMFiles;
                    }
                    CreateMFilesLoginAccount(user, app, accType, MFLicenseType.MFLicenseTypeConcurrentUserLicense);
                }
            }
            finally
            {
                app.Disconnect(); //todo 多线程时是否对其他会话有影响
            }
        }
Пример #12
0
        public IList <MfUser> GetMFilesLoginAccounts(VaultServer server)
        {
            var res = new List <MfUser>();
            var app = MFServerUtility.ConnectToServer(server.AdminName, server.AdminPwd, MFServerUtility.GetVaultServerLocalIp(server), server.ServerPort);

            try
            {
                var accs = MfUserUtils.GetLoginAccounts(app);
                res.AddRange(accs.Select(a => new MfUser
                {
                    AccountName = a.AccountName,
                    Domain      = a.DomainName,
                    UserName    = a.UserName,
                    Email       = a.EmailAddress,
                    FullName    = string.IsNullOrEmpty(a.FullName) ? a.UserName : a.FullName
                }));
            }
            finally
            {
                app.Disconnect(); //todo 多线程时是否对其他会话有影响
            }
            return(res);
        }
Пример #13
0
        public static int CreateVaultUser(Vault mVault, User user)
        {
            var loginName  = GetAccountName(user);
            var hasAccount = MfUserUtils.HasUserAccount(mVault, loginName);

            if (!hasAccount)
            {
                var account = new UserAccount
                {
                    LoginName    = loginName,
                    InternalUser = true,
                    VaultRoles   = MFUserAccountVaultRole.MFUserAccountVaultRoleDefaultRoles
                };
                return(mVault.UserOperations.AddUserAccount(account).ID);
            }
            var uId = MfUserUtils.EnableVaultUser(mVault, loginName);

            if (uId != null)
            {
                return(uId.Value);
            }
            return(-1);
        }
Пример #14
0
        internal ICollection <string> GetUsersInGroup(Vault ovault, int groupId)
        {
            var users = GetUsersFromGroup(ovault, groupId);

            return(users.Select(uid => ovault.UserOperations.GetUserAccount(uid)).Select(la => MfUserUtils.GetUserNameWithoutDomain(la.LoginName)).ToList());
        }
Пример #15
0
        public ICollection <string> GetUsersInGroup(MFilesVault vault, int groupId)
        {
            var ovault = MFServerUtility.GetVault(vault);
            var users  = GetUsersFromGroup(ovault, groupId);

            return(users.Select(uid => ovault.UserOperations.GetUserAccount(uid)).Select(la => MfUserUtils.GetUserNameWithoutDomain(la.LoginName)).ToList());
        }
Пример #16
0
        public void DisableVaultUser(int userId, MFilesVault vault)
        {
            var mVault = MFServerUtility.GetVault(vault);

            MfUserUtils.DisableVaultUser(mVault, userId);
        }
Пример #17
0
        public bool HasVaultUser(string userName, MFilesVault vault)
        {
            var mVault = MFServerUtility.GetVault(vault);

            return(MfUserUtils.HasUserAccount(mVault, userName));
        }
Пример #18
0
        public string GetAccountName(int userId, MFilesVault vault)
        {
            var mfVault = MFServerUtility.GetVault(vault);

            return(MfUserUtils.GetUserNameWithoutDomain(mfVault, userId));
        }
Пример #19
0
        private bool CheckTaskInOneVault(MFilesAPI.Vault vault, long currentuserid)
        {
            try
            {
                var loginName = _userService.GetUserById(currentuserid).GetAccountName();
                var mfuserid  = MfUserUtils.GetUserAccount(vault, loginName);
                //var ClassTaskApprove =
                //    vault.GetMetadataStructureItemIDByAlias(MFMetadataStructureItem.MFMetadataStructureItemClass,
                //        "ClassTaskApprove");
                var ClassNotification =
                    vault.GetMetadataStructureItemIDByAlias(MFMetadataStructureItem.MFMetadataStructureItemClass,
                                                            MfilesAliasConfig.ClassNotification);
                var pos = vault.Name.LastIndexOf('-');
                if (pos < 1)
                {
                    pos = vault.Name.Length;
                }
                //  var tasktitle = vault.Name.Substring(0, pos) + "-";
                if (mfuserid != null)
                {
                    //{
                    //    var scs = new SearchConditions();
                    //    {
                    //        var sc = new SearchCondition();
                    //        sc.ConditionType = MFConditionType.MFConditionTypeEqual;
                    //        sc.Expression.DataPropertyValuePropertyDef =
                    //            (int) MFBuiltInPropertyDef.MFBuiltInPropertyDefClass;
                    //        sc.TypedValue.SetValueToLookup(new Lookup
                    //        {
                    //            Item = (int) MFBuiltInObjectClass.MFBuiltInObjectClassGenericAssignment
                    //        });
                    //        scs.Add(-1, sc);
                    //    }
                    //    {
                    //        var sc = new SearchCondition();
                    //        sc.ConditionType = MFConditionType.MFConditionTypeEqual;
                    //        sc.Expression.DataPropertyValuePropertyDef =
                    //            (int) MFBuiltInPropertyDef.MFBuiltInPropertyDefAssignedTo;
                    //        sc.TypedValue.SetValueToLookup(new Lookup {Item = (int) mfuserid});
                    //        scs.Add(-1, sc);
                    //    }
                    //    var ovs = vault.ObjectSearchOperations.SearchForObjectsByConditionsEx(scs,
                    //        MFSearchFlags.MFSearchFlagNone, false, 0, 0).ObjectVersions.Count;
                    //    if (ovs > 0) return true;
                    //}
                    {
                        var scs = new SearchConditions();
                        {
                            var sc = new SearchCondition();
                            sc.ConditionType = MFConditionType.MFConditionTypeNotEqual;
                            sc.Expression.DataPropertyValuePropertyDef =
                                (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefClass;
                            sc.TypedValue.SetValueToLookup(new Lookup {
                                Item = ClassNotification
                            });
                            scs.Add(-1, sc);
                        }
                        {
                            var sc = new SearchCondition();
                            sc.ConditionType = MFConditionType.MFConditionTypeEqual;
                            sc.Expression.DataPropertyValuePropertyDef =
                                (int)MFBuiltInPropertyDef.MFBuiltInPropertyDefAssignedTo;
                            sc.TypedValue.SetValueToLookup(new Lookup {
                                Item = (int)mfuserid
                            });
                            scs.Add(-1, sc);
                        }
                        var ovs = vault.ObjectSearchOperations.SearchForObjectsByConditionsEx(scs,
                                                                                              MFSearchFlags.MFSearchFlagNone, false, 0, 0).ObjectVersions.Count;
                        if (ovs > 0)
                        {
                            return(true);
                        }
                    }
//                    {
////工作流任务

//                        var scs = new SearchConditions();
//                        {
//                            var sc = new SearchCondition();
//                            sc.ConditionType = MFConditionType.MFConditionTypeNotEqual;
//                            sc.Expression.SetStatusValueExpression(MFStatusType.MFStatusTypeObjectTypeID);

//                            sc.TypedValue.SetValueToLookup(new Lookup
//                            {
//                                Item = (int) MFBuiltInObjectType.MFBuiltInObjectTypeAssignment
//                            });
//                            scs.Add(-1, sc);
//                        }
//                        {
//                            var sc = new SearchCondition();
//                            sc.ConditionType = MFConditionType.MFConditionTypeEqual;
//                            sc.Expression.DataPropertyValuePropertyDef =
//                                (int) MFBuiltInPropertyDef.MFBuiltInPropertyDefAssignedTo;
//                            sc.TypedValue.SetValueToLookup(new Lookup {Item = (int) mfuserid});
//                            scs.Add(-1, sc);
//                        }
//                        var ovs = vault.ObjectSearchOperations.SearchForObjectsByConditionsEx(scs,
//                            MFSearchFlags.MFSearchFlagNone, false, 0, 0).ObjectVersions.Count;
//                        if (ovs > 0) return true;
//                    }
                }
            }
            catch (Exception ex)
            {
                Log.Info(string.Format("CheckTaskInOneVault {0},{1} error:{2}", vault.Name, currentuserid, ex.Message));
            }
            return(false);
        }
Пример #20
0
        public int?GetUserId(string userName, MFilesVault vault)
        {
            var mfVault = MFServerUtility.GetVault(vault);

            return(MfUserUtils.GetUserAccount(mfVault, userName));
        }
Пример #21
0
        public bool HasVaultUser(int userId, MFilesVault vault)
        {
            var mVault = MFServerUtility.GetVault(vault);

            return(MfUserUtils.HasUserAccount(mVault, userId));
        }