initial version with inspection edition
This commit is contained in:
69
IronIntelContractorBusiness/Host/ClientModels.cs
Normal file
69
IronIntelContractorBusiness/Host/ClientModels.cs
Normal file
@ -0,0 +1,69 @@
|
||||
using FI.FIC;
|
||||
using FI.FIC.Contracts.DataObjects.Enumeration;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace IronIntel.Contractor
|
||||
{
|
||||
#region - Client Models -
|
||||
|
||||
public class UserInfoItem : FICUserInfo
|
||||
{
|
||||
public string Source { get; set; }
|
||||
public int IsTempPassword { get; set; }
|
||||
public DateTime PWDExpiration { get; set; }
|
||||
public int UserMode { get; set; }
|
||||
public int UserCatalog { get; set; }
|
||||
public static UserInfoItem From(FICUserInfo user)
|
||||
{
|
||||
return new UserInfoItem
|
||||
{
|
||||
IID = user.IID,
|
||||
ID = user.ID,
|
||||
DisplayName = user.DisplayName,
|
||||
Email = user.Email,
|
||||
Enabled = user.Enabled,
|
||||
Mobile = user.Mobile,
|
||||
UserType = user.UserType,
|
||||
BusinessPhone = user.BusinessPhone,
|
||||
DefaultMobileWspIID = user.DefaultMobileWspIID,
|
||||
DefaultWspIID = user.DefaultWspIID,
|
||||
Notes = user.Notes
|
||||
};
|
||||
}
|
||||
}
|
||||
|
||||
public class UserManagementItem
|
||||
{
|
||||
public string IID { get; set; }
|
||||
public string ID { get; set; }
|
||||
public string Password { get; set; }
|
||||
public string DisplayName { get; set; }
|
||||
public string Email { get; set; }
|
||||
public string Mobile { get; set; }
|
||||
public string BusinessPhone { get; set; }
|
||||
public FICUserTypes UserType { get; set; }
|
||||
public string UserLevel { get; set; }
|
||||
public bool Enabled { get; set; }
|
||||
public string Active { get; set; }
|
||||
public int UserMode { get; set; }
|
||||
public string Groups { get; set; }
|
||||
public string DefaultWspIID { get; set; }
|
||||
public string DefaultMobileWspIID { get; set; }
|
||||
|
||||
public string[] GroupIIDs { get; set; }
|
||||
}
|
||||
|
||||
public class UserGroupManagementItem
|
||||
{
|
||||
public string IID { get; set; }
|
||||
public string Name { get; set; }
|
||||
public string Description { get; set; }
|
||||
public string[] UserIIDs { get; set; }
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
116
IronIntelContractorBusiness/Host/Common.cs
Normal file
116
IronIntelContractorBusiness/Host/Common.cs
Normal file
@ -0,0 +1,116 @@
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Configuration;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
|
||||
namespace IronIntel.Contractor
|
||||
{
|
||||
public class Common
|
||||
{
|
||||
public Common()
|
||||
{
|
||||
}
|
||||
|
||||
private static string _LoginSessionCookieName;
|
||||
public static string LoginSessionCookieName
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_LoginSessionCookieName == null)
|
||||
{
|
||||
_LoginSessionCookieName = Site.IronIntelBasePage.LOGINSESSION_COOKIENAME;
|
||||
}
|
||||
return _LoginSessionCookieName;
|
||||
}
|
||||
}
|
||||
|
||||
private static string _LanguageCookieName;
|
||||
public static string LanguageCookieName
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_LanguageCookieName == null)
|
||||
{
|
||||
_LanguageCookieName = LoginSessionCookieName + "language";
|
||||
}
|
||||
return _LanguageCookieName;
|
||||
}
|
||||
}
|
||||
|
||||
private static string _RememberCookieName;
|
||||
public static string RememberCookieName
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_RememberCookieName == null)
|
||||
{
|
||||
_RememberCookieName = LoginSessionCookieName + "RemberUser";
|
||||
}
|
||||
return _RememberCookieName;
|
||||
}
|
||||
}
|
||||
|
||||
private static string _FrsPeriodCookieName;
|
||||
public static string FrsPeriodCookieName
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_FrsPeriodCookieName == null)
|
||||
{
|
||||
_FrsPeriodCookieName = LoginSessionCookieName + "Period";
|
||||
}
|
||||
return _FrsPeriodCookieName;
|
||||
}
|
||||
}
|
||||
|
||||
private static string _FrsThemeCookieName;
|
||||
public static string FrsThemeCookieName
|
||||
{
|
||||
get
|
||||
{
|
||||
if (_FrsThemeCookieName == null)
|
||||
{
|
||||
_FrsThemeCookieName = LoginSessionCookieName + "FrsTheme";
|
||||
}
|
||||
return _FrsThemeCookieName;
|
||||
}
|
||||
}
|
||||
|
||||
/// <summary>
|
||||
/// 此方法只有FIC的的页面,其他页面也是会出错
|
||||
/// </summary>
|
||||
/// <param name="file"></param>
|
||||
/// <returns></returns>
|
||||
public static string GenerateUrl(string file)
|
||||
{
|
||||
string url;
|
||||
System.Web.UI.Page page = HttpContext.Current.Handler as System.Web.UI.Page;
|
||||
if (page != null)
|
||||
{
|
||||
// Use page instance.
|
||||
url = page.ResolveUrl("~/") + "fic/" + file;
|
||||
}
|
||||
else
|
||||
{
|
||||
// avoid duplicate operation
|
||||
url = HttpContext.Current.Request.ApplicationPath + "/fic/" + file;
|
||||
}
|
||||
try
|
||||
{
|
||||
var path = System.IO.Path.Combine(HttpContext.Current.Request.PhysicalApplicationPath, "fic/" + file);
|
||||
if (System.IO.File.Exists(path))
|
||||
{
|
||||
url += "?t=" + System.IO.File.GetLastWriteTimeUtc(path).Ticks;
|
||||
}
|
||||
}
|
||||
catch (Exception)
|
||||
{
|
||||
// cant read file
|
||||
}
|
||||
return url;
|
||||
}
|
||||
}
|
||||
}
|
69
IronIntelContractorBusiness/Host/HostRequesEntry.cs
Normal file
69
IronIntelContractorBusiness/Host/HostRequesEntry.cs
Normal file
@ -0,0 +1,69 @@
|
||||
using FI.FIC;
|
||||
using FI.FIC.Contracts;
|
||||
using FI.FIC.Contracts.DataObjects;
|
||||
using FI.FIC.Contracts.DataObjects.Enumeration;
|
||||
using FI.FIC.DataProviders.HelpClass;
|
||||
using FI.FIC.Models;
|
||||
using Foresight;
|
||||
using IronIntel.Contractor.Users;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data.SqlClient;
|
||||
using System.Linq;
|
||||
using System.Reflection;
|
||||
using System.Text;
|
||||
using System.Threading;
|
||||
using System.Threading.Tasks;
|
||||
using System.Web;
|
||||
|
||||
namespace IronIntel.Contractor
|
||||
{
|
||||
public class HostRequesEntry
|
||||
{
|
||||
public static object ProcessNetRequest(FICNetRequestObject netQuery, HttpContext context)
|
||||
{
|
||||
switch (netQuery.MethodName)
|
||||
{
|
||||
case "ChangePassword":
|
||||
var lc = FICHostEnvironment.GetCurrentLoginContext(context);
|
||||
if (!UserManagement.ChangePassword(netQuery.LoginIID, netQuery.Parameters[0].ToString(), netQuery.Parameters[1].ToString(), lc.SessionID, context.Request.UserHostName))
|
||||
{
|
||||
throw new FIException(0X65026303, "", null);
|
||||
}
|
||||
break;
|
||||
case "LoginFIC"://跳转到G4,IronIntel没有G4版本
|
||||
return "";
|
||||
case "GetVersion":
|
||||
return SystemParams.GetFICVersion();
|
||||
default:
|
||||
//rsp.Result = something
|
||||
var service = new HostService();
|
||||
service.Request = netQuery;
|
||||
var method = typeof(HostService).GetMethod(netQuery.MethodName);
|
||||
try
|
||||
{
|
||||
return method.Invoke(service, netQuery.Parameters);
|
||||
}
|
||||
catch (TargetInvocationException ex)
|
||||
{
|
||||
if (ex.InnerException != null)
|
||||
{
|
||||
throw ex.InnerException;
|
||||
}
|
||||
throw;
|
||||
}
|
||||
}
|
||||
return null;
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
public class LoginModel
|
||||
{
|
||||
public int ErrorCode { get; set; }
|
||||
public string Message { get; set; }
|
||||
public string Cookie { get; set; }
|
||||
}
|
||||
}
|
558
IronIntelContractorBusiness/Host/HostService.cs
Normal file
558
IronIntelContractorBusiness/Host/HostService.cs
Normal file
@ -0,0 +1,558 @@
|
||||
using FI.FIC;
|
||||
using FI.FIC.Contracts;
|
||||
using FI.FIC.Contracts.DataObjects;
|
||||
using FI.FIC.Contracts.DataObjects.BaseObject;
|
||||
using FI.FIC.Contracts.DataObjects.BLObject;
|
||||
using FI.FIC.Contracts.DataObjects.Enumeration;
|
||||
using FI.FIC.Models;
|
||||
using IronIntel.Contractor.Users;
|
||||
using Newtonsoft.Json;
|
||||
using System;
|
||||
using System.Collections.Generic;
|
||||
using System.Data;
|
||||
using System.Linq;
|
||||
using System.Text;
|
||||
using System.Text.RegularExpressions;
|
||||
using System.Threading.Tasks;
|
||||
|
||||
namespace IronIntel.Contractor
|
||||
{
|
||||
public class HostService
|
||||
{
|
||||
private FICUserInfo _User;
|
||||
private FICNetRequestObject _Request;
|
||||
public FICNetRequestObject Request
|
||||
{
|
||||
get { return _Request; }
|
||||
set
|
||||
{
|
||||
_Request = value;
|
||||
if (value == null)
|
||||
{
|
||||
return;
|
||||
}
|
||||
_User = FICHostEnvironment.GetUserByLoginSessionID(value.SessionID);
|
||||
}
|
||||
}
|
||||
|
||||
public static UserInfoItem[] GetAllUsers(bool hasAdmin = false)
|
||||
{
|
||||
//UserInfoItem[] users = UserManagement.GetAllUsers(hasAdmin);
|
||||
//List<UserInfoItem> ls = new List<UserInfoItem>();
|
||||
//foreach (UserInfoItem ui in users)
|
||||
//{
|
||||
// ui.UserType = UserManagement.GetUserTypeByIID(ui.IID);
|
||||
// ls.Add(ui);
|
||||
//}
|
||||
//return ls.ToArray();
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public string CurrentUserIID
|
||||
{
|
||||
get { return _User == null ? null : _User.IID; }
|
||||
}
|
||||
|
||||
public string CurrentUserName
|
||||
{
|
||||
get { return _User == null ? null : _User.DisplayName; }
|
||||
}
|
||||
|
||||
public string ClientLanguage
|
||||
{
|
||||
get { return _Request == null ? ResManager.DefaultLanguage : _Request.LanguageID; }
|
||||
}
|
||||
|
||||
public string DeleteUserGroup(string iid)
|
||||
{
|
||||
try
|
||||
{
|
||||
UserManagement.DeleteGroup(iid);
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
SystemParams.WriteLog("ERROR", "DeleteUserGroup", ex.Message, ex.ToString());
|
||||
throw new Exception(ResManager.GetLanguage("LHBIS_EXCEPTION_E0X6502704C")); // "Failed to delete the user group."
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public UserManagementItem[] GetUsers()
|
||||
{
|
||||
//var users = GetAllUsers();
|
||||
//var items = new List<UserManagementItem>();
|
||||
|
||||
//var groups = UserManagement.GetUserGroupMapping().Rows.Cast<DataRow>();
|
||||
|
||||
//for (int i = 0; i < users.Length; i++)
|
||||
//{
|
||||
// if (string.Compare(users[i].ID, "admin", true) == 0)
|
||||
// {
|
||||
// continue;
|
||||
// }
|
||||
// var item = ConvertFromFICUser(users[i]);
|
||||
// // fill default param
|
||||
// item.DefaultWspIID = UserParametersInfo.GetUserSystemParameter(EMUserDefaultInfoType.DefaultWorkSpace, users[i].IID);
|
||||
// item.DefaultMobileWspIID = UserParametersInfo.GetUserSystemParameter(EMUserDefaultInfoType.DefaultWorkSpace4Mobile, users[i].IID);
|
||||
// // fill groups
|
||||
// var gs = groups
|
||||
// .Where(g => g["USERID"].ToString().ToUpper() == users[i].IID.ToUpper())
|
||||
// .Select(g => g["GROUPNAME"]);
|
||||
// item.Groups = string.Join("; ", gs);
|
||||
|
||||
// items.Add(item);
|
||||
//}
|
||||
//return items.ToArray();
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
private UserManagementItem ConvertFromFICUser(UserInfoItem user)
|
||||
{
|
||||
var item = new UserManagementItem
|
||||
{
|
||||
IID = user.IID,
|
||||
ID = user.ID,
|
||||
DisplayName = user.DisplayName,
|
||||
Email = user.Email,
|
||||
Mobile = user.Mobile,
|
||||
BusinessPhone = user.BusinessPhone,
|
||||
UserType = user.UserType,
|
||||
Enabled = user.Enabled,
|
||||
Active = user.Enabled ? "Yes" : "No",
|
||||
UserMode = user.UserMode
|
||||
};
|
||||
switch (user.UserType)
|
||||
{
|
||||
case FICUserTypes.Admin:
|
||||
case FICUserTypes.SuperAdmin:
|
||||
item.UserLevel = "Admin";
|
||||
break;
|
||||
case FICUserTypes.Common:
|
||||
item.UserLevel = "User";
|
||||
break;
|
||||
default:
|
||||
item.UserLevel = "Read Only User";
|
||||
break;
|
||||
}
|
||||
return item;
|
||||
}
|
||||
|
||||
private static Regex reg_userid = new Regex("^[a-zA-Z0-9_-]+$");
|
||||
private static Regex reg_email = new Regex(@"^([a-zA-Z0-9]+[-_.]?)*[a-zA-Z0-9]+@([a-zA-Z0-9-_]+\.)*[a-zA-Z]{2,4}$");
|
||||
|
||||
private bool IsAdminOrSuper(FICUserTypes type)
|
||||
{
|
||||
return type == FICUserTypes.Admin || type == FICUserTypes.SuperAdmin;
|
||||
}
|
||||
private string VerifyPermission(string iid)
|
||||
{
|
||||
return VerifyPermission(new UserManagementItem
|
||||
{
|
||||
IID = iid,
|
||||
UserType = FICUserTypes.Readonly
|
||||
});
|
||||
}
|
||||
private string VerifyPermission(UserManagementItem user)
|
||||
{
|
||||
var currentUser = FICHostEnvironment.GetUserByIID(CurrentUserIID);
|
||||
var flag = false;
|
||||
if (string.IsNullOrEmpty(user.IID))
|
||||
{
|
||||
if (!IsAdminOrSuper(currentUser.UserType) &&
|
||||
user.UserType == FICUserTypes.Admin)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
else
|
||||
{
|
||||
var olduser = FICHostEnvironment.GetUserByIID(user.IID);
|
||||
//if (olduser.UserType == FICUserTypes.Admin)
|
||||
if (currentUser.UserType < user.UserType)
|
||||
{
|
||||
flag = true;
|
||||
}
|
||||
}
|
||||
if (flag)
|
||||
{
|
||||
SystemParams.WriteLog("ERROR", "SaveUser", "user try to edit user with illegal permission.", string.Format("current user: {0}, {1}", CurrentUserIID, CurrentUserName));
|
||||
return ResManager.GetLanguage("ERROR_LHBIS_FIC_BLC_BLWORKSPACE_A0034"); // "The user does not have the required access rights.";
|
||||
}
|
||||
return null;
|
||||
}
|
||||
|
||||
public string SaveUser(FICUserInfo user, string password, string[] groups)
|
||||
{
|
||||
var item = new UserManagementItem
|
||||
{
|
||||
IID = user.IID,
|
||||
ID = user.ID,
|
||||
DisplayName = user.DisplayName,
|
||||
Mobile = user.Mobile,
|
||||
BusinessPhone = user.BusinessPhone,
|
||||
Email = user.Email,
|
||||
UserType = user.UserType,
|
||||
DefaultWspIID = user.DefaultWspIID,
|
||||
DefaultMobileWspIID = user.DefaultMobileWspIID,
|
||||
Enabled = user.Enabled,
|
||||
Password = password,
|
||||
GroupIIDs = groups
|
||||
};
|
||||
return SaveUser(item, null);
|
||||
}
|
||||
|
||||
private string SaveUser(UserManagementItem user, string subject)
|
||||
{
|
||||
if (user == null)
|
||||
{
|
||||
return "User param is invalid.";
|
||||
}
|
||||
|
||||
// 权限验证
|
||||
var r = VerifyPermission(user);
|
||||
if (r != null)
|
||||
{
|
||||
return r;
|
||||
}
|
||||
|
||||
if (string.IsNullOrWhiteSpace(user.ID))
|
||||
{
|
||||
return ResManager.GetLanguage("LHBIS_FIC_CLIENT_MODULES_USERMANAGERCTRL_A023"); // "User ID cannot be empty.";
|
||||
}
|
||||
if (!reg_email.Match(user.ID).Success && !reg_userid.Match(user.ID).Success)
|
||||
{
|
||||
return ResManager.GetLanguage("LHBIS_FIC_CLIENT_MODULES_USERMANAGERCTRL_A056"); // "The user ID must contain only letters, numbers, underlines, minus signs or an email address.";
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(user.DisplayName))
|
||||
{
|
||||
return ResManager.GetLanguage("LHBIS_FIC_CLIENT_MODULES_USERMANAGERCTRL_A024"); // "User name cannot be empty.";
|
||||
}
|
||||
if (!string.IsNullOrWhiteSpace(user.Email) && !reg_email.Match(user.Email).Success)
|
||||
{
|
||||
return ResManager.GetLanguage("LHBIS_FIC_CLIENT_MODULES_USERMANAGERCTRL_A066"); // "Email address is invalid.";
|
||||
}
|
||||
user.ID = user.ID.Trim();
|
||||
if (user.ID.Length > 100)
|
||||
{
|
||||
user.ID = user.ID.Substring(0, 100);
|
||||
}
|
||||
if (user.DisplayName != null && user.DisplayName.Length > 100)
|
||||
{
|
||||
user.DisplayName = user.DisplayName.Substring(0, 100);
|
||||
}
|
||||
if (user.Password != null && user.Password.Length > 300)
|
||||
{
|
||||
user.Password = user.Password.Substring(0, 300);
|
||||
}
|
||||
if (user.Mobile != null && user.Mobile.Length > 50)
|
||||
{
|
||||
user.Mobile = user.Mobile.Substring(0, 50);
|
||||
}
|
||||
if (user.BusinessPhone != null && user.BusinessPhone.Length > 50)
|
||||
{
|
||||
user.BusinessPhone = user.BusinessPhone.Substring(0, 50);
|
||||
}
|
||||
|
||||
// groups
|
||||
|
||||
|
||||
string result = SaveUser(new UserInfoItem
|
||||
{
|
||||
IID = user.IID,
|
||||
ID = user.ID,
|
||||
DisplayName = user.DisplayName,
|
||||
Enabled = user.Enabled,
|
||||
Mobile = user.Mobile,
|
||||
BusinessPhone = user.BusinessPhone,
|
||||
Email = user.Email,
|
||||
UserType = user.UserType,
|
||||
DefaultWspIID = user.DefaultWspIID,
|
||||
DefaultMobileWspIID = user.DefaultMobileWspIID
|
||||
}, user.Password, user.GroupIIDs, subject);
|
||||
if (result == null)
|
||||
{
|
||||
return "OK";
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private string SaveUser(UserInfoItem user, string password, string[] groups, string subject)
|
||||
{
|
||||
//try
|
||||
//{
|
||||
// if (string.IsNullOrEmpty(user.IID))
|
||||
// {
|
||||
// UserManagement.AddUser(user, password, groups);
|
||||
|
||||
// //UserManagement.AddUser(user, password, groups, subject, ClientLanguage);
|
||||
// }
|
||||
// else
|
||||
// {
|
||||
// UserManagement.EditUser(user, groups);
|
||||
// }
|
||||
// return null;
|
||||
//}
|
||||
//catch (Exception ex)
|
||||
//{
|
||||
// return ex.Message;
|
||||
//}
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public string ResetPassword(string iid, string password)
|
||||
{
|
||||
// 权限验证
|
||||
//var r = VerifyPermission(iid);
|
||||
//if (r != null)
|
||||
//{
|
||||
// return r;
|
||||
//}
|
||||
|
||||
////if (!string.IsNullOrEmpty(password))
|
||||
////{
|
||||
//// password = HttpUtility.HtmlDecode(password);
|
||||
////}
|
||||
//UserManagement.ResetPassword(iid, string.IsNullOrEmpty(password), password);
|
||||
|
||||
//return null;
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public string DeleteUser(string iid)
|
||||
{
|
||||
// 权限验证
|
||||
//var r = VerifyPermission(iid);
|
||||
//if (r != null)
|
||||
//{
|
||||
// return r;
|
||||
//}
|
||||
|
||||
//try
|
||||
//{
|
||||
// UserManagement.DeleteUser(iid);
|
||||
//}
|
||||
//catch (Exception ex)
|
||||
//{
|
||||
// FICHostEnvironment.WriteLog("ERROR", "", "DeleteUser", ex.Message, ex.ToString());
|
||||
// throw new Exception(ResManager.GetLanguage("LHBIS_EXCEPTION_E0X65027021")); // "Failed to delete the user."
|
||||
//}
|
||||
//return null;
|
||||
throw new NotImplementedException();
|
||||
}
|
||||
|
||||
public UserGroupSimple[] GetUserGroups(string iid)
|
||||
{
|
||||
UserGroupSimple[] groups = SearchLocalGroups(null);
|
||||
var selected = FICHostEnvironment.GetUserGroupIDByUserIID(iid);
|
||||
|
||||
foreach (var g in groups)
|
||||
{
|
||||
if (selected.Contains(g.UserGroupID))
|
||||
{
|
||||
g.IsSelected = true;
|
||||
}
|
||||
}
|
||||
return groups;
|
||||
}
|
||||
|
||||
public UserGroupSimple[] GetAllGroups()
|
||||
{
|
||||
var groups = SearchLocalGroups(null);
|
||||
return groups;
|
||||
}
|
||||
|
||||
public List<UserSimple> GetGroupMembers(string iid)
|
||||
{
|
||||
var users = FICHostEnvironment.GetUsers();
|
||||
if (string.IsNullOrEmpty(iid))
|
||||
{
|
||||
iid = Guid.Empty.ToString();
|
||||
}
|
||||
var selected = UserManagement.GetUserInfoByGoupid(iid);
|
||||
|
||||
var list = new List<UserSimple>();
|
||||
foreach (var u in users)
|
||||
{
|
||||
var item = new UserSimple
|
||||
{
|
||||
IID = u.IID,
|
||||
UserID = u.ID,
|
||||
UserName = u.DisplayName
|
||||
};
|
||||
var su = selected.FirstOrDefault((t) => t.IID.Equals(u.IID, StringComparison.OrdinalIgnoreCase));
|
||||
if (su != null)
|
||||
{
|
||||
item.IsSelected = true;
|
||||
}
|
||||
list.Add(item);
|
||||
}
|
||||
return list;
|
||||
}
|
||||
|
||||
public string SaveGroup(string gs)
|
||||
{
|
||||
//gs = HttpUtility.HtmlDecode(gs);
|
||||
var group = JsonConvert.DeserializeObject<UserGroupManagementItem>(gs);
|
||||
|
||||
if (group == null)
|
||||
{
|
||||
return "Group param is invalid.";
|
||||
}
|
||||
if (string.IsNullOrWhiteSpace(group.Name))
|
||||
{
|
||||
return ResManager.GetLanguage("LHBIS_FIC_CLIENT_MODULES_USERADDDIALOG_A004"); // "Group name cannot be empty.";
|
||||
}
|
||||
|
||||
// users
|
||||
if (group.Name.Length > 100)
|
||||
{
|
||||
group.Name = group.Name.Substring(0, 100);
|
||||
}
|
||||
if (group.Description != null && group.Description.Length > 200)
|
||||
{
|
||||
group.Description = group.Description.Substring(0, 200);
|
||||
}
|
||||
|
||||
string result = SaveGroup(new UserGroupSimple
|
||||
{
|
||||
UserGroupID = group.IID,
|
||||
UserGroupName = group.Name,
|
||||
Description = group.Description,
|
||||
}, group.UserIIDs);
|
||||
if (result == null)
|
||||
{
|
||||
return "OK";
|
||||
}
|
||||
return result;
|
||||
}
|
||||
|
||||
private string SaveGroup(UserGroupSimple group, string[] users)
|
||||
{
|
||||
try
|
||||
{
|
||||
var add = string.IsNullOrEmpty(group.UserGroupID);
|
||||
bool isimport;
|
||||
if (!add)
|
||||
{
|
||||
// import domain group
|
||||
add = users == null && group.GroupMode == 1;
|
||||
isimport = add;
|
||||
}
|
||||
else
|
||||
{
|
||||
isimport = false;
|
||||
}
|
||||
UserGroupInfo ug = new UserGroupInfo();
|
||||
ug.ID = group.UserGroupID;
|
||||
ug.Name = group.UserGroupName;
|
||||
ug.Notes = group.Description;
|
||||
|
||||
List<UserInfo> userList = new List<UserInfo>();
|
||||
if (users != null)
|
||||
{
|
||||
foreach (string u in users)
|
||||
{
|
||||
userList.Add(new UserInfo() { IID = u });
|
||||
}
|
||||
}
|
||||
ug.Users = userList.ToArray();
|
||||
|
||||
if (add)
|
||||
{
|
||||
UserManagement.AddGroup(ug);
|
||||
}
|
||||
else
|
||||
{
|
||||
UserManagement.UpdateGroup(ug);
|
||||
}
|
||||
return null;
|
||||
}
|
||||
catch (Exception ex)
|
||||
{
|
||||
return ex.Message;
|
||||
}
|
||||
}
|
||||
|
||||
public object[] GetUsersAndGroups()
|
||||
{
|
||||
// get users
|
||||
var users = FICHostEnvironment.GetUsers().Where(u => u.UserType < FICUserTypes.Admin);
|
||||
var groups = SearchLocalGroups("");
|
||||
|
||||
return new object[]
|
||||
{
|
||||
users,
|
||||
groups
|
||||
};
|
||||
}
|
||||
|
||||
public UserGroupSimple[] SearchLocalGroups(string prefix)
|
||||
{
|
||||
return UserManagement.SearchLocalGroups(prefix).OrderBy(m => m.UserGroupName).ToArray();
|
||||
}
|
||||
|
||||
public UserSimple[] GetPermissionUsers()
|
||||
{
|
||||
List<UserSimple> userSimples = new List<UserSimple>();
|
||||
|
||||
UserInfoItem[] userInfos = UserManagement.GetPermissionUsers();
|
||||
|
||||
foreach (var userInfo in userInfos)
|
||||
{
|
||||
UserSimple user = new UserSimple();
|
||||
user.IID = userInfo.IID;
|
||||
user.UserID = userInfo.ID;
|
||||
user.UserName = userInfo.DisplayName;
|
||||
userSimples.Add(user);
|
||||
}
|
||||
|
||||
return userSimples.OrderBy(m => m.UserID).ToArray();
|
||||
}
|
||||
|
||||
public UserPermissionData[] GetUserOrGroupPermission(string UserOrGroup, string objIID)
|
||||
{
|
||||
return UserManagement.GetUserOrGroupPermission(UserOrGroup, objIID, CurrentUserIID);
|
||||
}
|
||||
|
||||
#region - System Options -
|
||||
|
||||
public void SaveConnectorConfigs(string[] configs)
|
||||
{
|
||||
if (configs != null)
|
||||
{
|
||||
SystemParams.SetFICStringParameter("ConnectorServer", configs[0] ?? "");
|
||||
SystemParams.SetFICStringParameter("ConnectorToken", configs[1] ?? "");
|
||||
}
|
||||
}
|
||||
|
||||
public void SaveLDAPConnector(string[] configs)
|
||||
{
|
||||
if (configs != null)
|
||||
{
|
||||
SystemParams.SetFICStringParameter("LdapAgentID", configs[0] ?? "");
|
||||
SystemParams.SetFICStringParameter("LdapAgentToken", configs[1] ?? "");
|
||||
}
|
||||
}
|
||||
|
||||
public void SaveRedisConfigs(bool enabled, string token)
|
||||
{
|
||||
if (token != null)
|
||||
{
|
||||
token = token.Replace('\n', ';');
|
||||
}
|
||||
SystemParams.SetFICStringParameter("RedisEnabled", enabled ? "Yes" : "No");
|
||||
SystemParams.SetFICStringParameter("RedisToken", token);
|
||||
}
|
||||
|
||||
public object GetRedisConfigs()
|
||||
{
|
||||
return new
|
||||
{
|
||||
Enabled = SystemParams.RedisEnabled,
|
||||
RedisToken = SystemParams.RedisToken
|
||||
};
|
||||
}
|
||||
|
||||
#endregion
|
||||
}
|
||||
}
|
Reference in New Issue
Block a user