public IActionResult Find(IEnumerable <Guid> userIds) { var sw = Stopwatch.StartNew(); userIds = userIds ?? new List <Guid>(); var users = HostedSolution.FindUsers(userIds); var result = users.Select(user => new { id = user.ID, name = UserFormatter.GetUserName(user), email = user.Email, link = GetUserProfileLink(user) }); Log.DebugFormat("People find {0} / {1}; Elapsed {2} ms", result.Count(), userIds.Count(), sw.ElapsedMilliseconds); sw.Stop(); return(Ok(new { result })); }
public UserManagerWrapper( StudioNotifyService studioNotifyService, UserManager userManager, SecurityContext securityContext, MessageService messageService, CustomNamingPeople customNamingPeople, TenantUtil tenantUtil, CoreBaseSettings coreBaseSettings, IPSecurity.IPSecurity iPSecurity, DisplayUserSettingsHelper displayUserSettingsHelper, SettingsManager settingsManager, UserFormatter userFormatter) { StudioNotifyService = studioNotifyService; UserManager = userManager; SecurityContext = securityContext; MessageService = messageService; CustomNamingPeople = customNamingPeople; TenantUtil = tenantUtil; CoreBaseSettings = coreBaseSettings; IPSecurity = iPSecurity; DisplayUserSettingsHelper = displayUserSettingsHelper; SettingsManager = settingsManager; UserFormatter = userFormatter; }
public PortalController( IConfiguration configuration, Core.SecurityContext securityContext, TenantManager tenantManager, SettingsManager settingsManager, ApiSystemHelper apiSystemHelper, CommonMethods commonMethods, HostedSolution hostedSolution, CoreSettings coreSettings, TenantDomainValidator tenantDomainValidator, UserFormatter userFormatter, UserManagerWrapper userManagerWrapper, CommonConstants commonConstants, IOptionsMonitor <ILog> option, TimeZonesProvider timeZonesProvider, TimeZoneConverter timeZoneConverter) { Configuration = configuration; SecurityContext = securityContext; TenantManager = tenantManager; SettingsManager = settingsManager; ApiSystemHelper = apiSystemHelper; CommonMethods = commonMethods; HostedSolution = hostedSolution; CoreSettings = coreSettings; TenantDomainValidator = tenantDomainValidator; UserFormatter = userFormatter; UserManagerWrapper = userManagerWrapper; CommonConstants = commonConstants; TimeZonesProvider = timeZonesProvider; TimeZoneConverter = timeZoneConverter; Log = option.Get("ASC.ApiSystem"); }
public RegistrationController( CommonMethods commonMethods, CommonConstants commonConstants, IOptionsSnapshot <HostedSolution> hostedSolution, TimeZonesProvider timeZonesProvider, TimeZoneConverter timeZoneConverter, ApiSystemHelper apiSystemHelper, SecurityContext securityContext, TenantManager tenantManager, SettingsManager settingsManager, CoreSettings coreSettings, TenantDomainValidator tenantDomainValidator, UserFormatter userFormatter, UserManagerWrapper userManagerWrapper, IConfiguration configuration, IOptionsMonitor <ILog> option, PasswordHasher passwordHasher) { CommonMethods = commonMethods; CommonConstants = commonConstants; HostedSolution = hostedSolution.Value; TimeZonesProvider = timeZonesProvider; TimeZoneConverter = timeZoneConverter; ApiSystemHelper = apiSystemHelper; SecurityContext = securityContext; TenantManager = tenantManager; SettingsManager = settingsManager; CoreSettings = coreSettings; TenantDomainValidator = tenantDomainValidator; UserFormatter = userFormatter; UserManagerWrapper = userManagerWrapper; Configuration = configuration; PasswordHasher = passwordHasher; Log = option.Get("ASC.ApiSystem"); }
public override Vcard GetVCard(Jid jid) { ASCContext.SetCurrentTenant(jid.Server); jid = new Jid(jid.Bare.ToLowerInvariant()); var ui = ASCContext.UserManager.GetUserByUserName(jid.User); if (ui != null) { var vcard = (Vcard)cache.Get(jid.ToString()); if (vcard != null) { return(vcard); } vcard = new Vcard(); vcard.Name = new Name(ui.LastName, ui.FirstName, null); vcard.Fullname = UserFormatter.GetUserName(ui); vcard.Nickname = ui.UserName; vcard.Description = ui.Notes; if (ui.BirthDate != null) { vcard.Birthday = ui.BirthDate.Value; } vcard.JabberId = jid; if (ui.Sex.HasValue) { vcard.Gender = ui.Sex.Value ? Gender.MALE : Gender.FEMALE; } var index = ui.Contacts.FindIndex(c => string.Compare(c, "phone", true) == 0) + 1; if (0 < index && index < ui.Contacts.Count) { vcard.AddTelephoneNumber(new Telephone(TelephoneLocation.WORK, TelephoneType.NUMBER, ui.Contacts[index])); } vcard.AddEmailAddress(new Email(EmailType.INTERNET, ui.Email, true)); var tenant = ASCContext.GetCurrentTenant(); var departments = string.Join(", ", CoreContext.UserManager.GetUserGroups(ui.ID).Select(d => HttpUtility.HtmlEncode(d.Name)).ToArray()); if (tenant != null) { vcard.Organization = new Organization(tenant.Name, departments); } vcard.Title = ui.Title; var image = PreparePhoto(ASCContext.UserManager.GetUserPhoto(ui.ID, Guid.Empty)); if (image != null) { vcard.Photo = new Photo(image, ImageFormat.Png); image.Dispose(); } cache.Insert(jid.ToString(), vcard, CACHE_TIMEOUT); return(vcard); } else { return(base.GetVCard(jid)); } }
private bool CheckValidName(string name, out object error) { error = null; if (string.IsNullOrEmpty(name = (name ?? "").Trim())) { error = new { error = new[] { "error" }, message = "name is required" }; return(false); } if (!UserFormatter.IsValidUserName(name, string.Empty)) { error = new { error = new[] { "error" }, message = "name is incorrect" }; return(false); } return(true); }
public void Initialize() { userActionMock = new Mock <IUserAction>(); userDomainMock = new Mock <IUserDomain>(); userFakedata = new UserFakeData(); userFormatter = new UserFormatter(); }
public AuthManager(IUserService service, UserManager userManager, UserFormatter userFormatter, TenantManager tenantManager) { userService = service; UserManager = userManager; UserFormatter = userFormatter; TenantManager = tenantManager; }
public static string GetFullUserName(UserInfo userInfo, DisplayUserNameFormat format, bool withHtmlEncode) { if (userInfo == null) { return(string.Empty); } if (!userInfo.ID.Equals(Guid.Empty) && !CoreContext.UserManager.UserExists(userInfo.ID)) { try { var resourceType = Type.GetType("Resources.Resource, ASC.Web.Studio"); var resourceProperty = resourceType.GetProperty("ProfileRemoved", BindingFlags.Static | BindingFlags.Public); var resourceValue = (string)resourceProperty.GetValue(null); return(string.IsNullOrEmpty(resourceValue) ? RemovedProfileName : resourceValue); } catch (Exception) { return(RemovedProfileName); } } var result = UserFormatter.GetUserName(userInfo, format); return(withHtmlEncode ? result.HtmlEncode() : result); }
public AuditEventsRepository(MessageTarget messageTarget, UserFormatter userFormatter, DbContextManager <AuditTrailContext> dbContextManager, AuditActionMapper auditActionMapper) { MessageTarget = messageTarget; UserFormatter = userFormatter; AuditTrailContext = dbContextManager.Value; AuditActionMapper = auditActionMapper; }
public void SetNoneUserChange(UserInfo user) { var change = new LdapChange(user.Sid, UserFormatter.GetUserName(user, DisplayUserNameFormat.Default), user.Email, LdapChangeType.User, LdapChangeAction.None); Add(change); }
public int CompareTo(object obj) { var other = obj as Participant; return(other == null ? Comparer.Default.Compare(this, obj) : UserFormatter.Compare(UserInfo, other.UserInfo)); }
private List <UserInfo> SyncGroupsUsers(List <UserInfo> uniqueLdapGroupUsers) { const double percents = 30; var step = percents / uniqueLdapGroupUsers.Count; var percentage = (double)GetProgress(); var newUniqueLdapGroupUsers = new List <UserInfo>(); var index = 0; var count = uniqueLdapGroupUsers.Count; int i, len; for (i = 0, len = uniqueLdapGroupUsers.Count; i < len; i++) { var ldapGroupUser = uniqueLdapGroupUsers[i]; SetProgress(Convert.ToInt32(percentage), currentSource: string.Format("({0}/{1}): {2}", ++index, count, UserFormatter.GetUserName(ldapGroupUser, DisplayUserNameFormat.Default))); UserInfo user; switch (OperationType) { case LdapOperationType.Save: case LdapOperationType.Sync: user = LDAPUserManager.SyncLDAPUser(ldapGroupUser, uniqueLdapGroupUsers); if (!Equals(user, Constants.LostUser)) { newUniqueLdapGroupUsers.Add(user); } break; case LdapOperationType.SaveTest: case LdapOperationType.SyncTest: LdapChangeCollection changes; user = LDAPUserManager.GetLDAPSyncUserChange(ldapGroupUser, uniqueLdapGroupUsers, out changes); if (!Equals(user, Constants.LostUser)) { newUniqueLdapGroupUsers.Add(user); } _ldapChanges.AddRange(changes); break; default: throw new ArgumentOutOfRangeException(); } percentage += step; } return(newUniqueLdapGroupUsers); }
public UserAccount(UserInfo info, int tenant, UserFormatter userFormatter) { ID = info.ID; Name = userFormatter.GetUserName(info); FirstName = info.FirstName; LastName = info.LastName; Title = info.Title; Tenant = tenant; Email = info.Email; }
protected override IEnumerable <KeyValuePair <string, object> > GetClientVariables(HttpContext context) { return(new List <KeyValuePair <string, object> >(1) { RegisterObject(new { emptyScreenPeopleFilter = WebImageSupplier.GetAbsoluteWebPath("empty_screen_filter.png"), userDisplayFormat = (int)UserFormatter.GetUserDisplayDefaultOrder() }) }); }
public void Search() { Console.WriteLine(@"Welcome to Zendesk search engine Press Ctrl+C to exit at any time, Press enter to continue Select Search options: * Press 1 to search Zendesk * Press 2 to view a list of searchable fields * Press Ctrl+C to exit"); var userInputSelectSearch = Console.ReadLine(); if (userInputSelectSearch == "1") { Console.WriteLine(@"Select 1) Users 2) Tickets 3) Organisations"); var userSearchInput = Console.ReadLine(); var termAndValueResult = SearchTermAndValue(); switch (userSearchInput) { case "1": Console.WriteLine($"Searching users for Key: {termAndValueResult.term} and Value: {termAndValueResult.val}"); var userSearchResult = _user.GetUserDetails(termAndValueResult.term, termAndValueResult.val); UserFormatter.UserFormatOutput(userSearchResult); break; case "2": Console.WriteLine($"Searching tickets for Key: {termAndValueResult.term} and Value: {termAndValueResult.val}"); var ticketSearchResult = _ticket.GetTicketDetails(termAndValueResult.term, termAndValueResult.val); TicketFormatter.FormatTicketOutput(ticketSearchResult); break; case "3": Console.WriteLine($"Searching organisations for Key: {termAndValueResult.term} and Value: {termAndValueResult.val}"); var orgSearchResult = _org.GetOrganizationDetails(termAndValueResult.term, termAndValueResult.val); OranizationFormatter.FormatOrganizationOutput(orgSearchResult); break; default: Console.WriteLine("Invalid search option"); break; } } else if (userInputSelectSearch == "2") { GetAllSearchTerms.SearchTerms(); } else { Console.WriteLine("No results found. Please check for valid inputs"); } }
public static string GetFullUserName(UserInfo userInfo, DisplayUserNameFormat format, bool withHtmlEncode) { if (userInfo == null) { return string.Empty; } if (!userInfo.ID.Equals(Guid.Empty) && !CoreContext.UserManager.UserExists(userInfo.ID)) { return RemovedProfileName; } var result = UserFormatter.GetUserName(userInfo, format); return withHtmlEncode ? result.HtmlEncode() : result; }
public void SetAddUserChange(UserInfo user, ILog log = null) { var fieldChanges = LdapUserMapping.Fields.Select(field => GetPropChange(field, after: user, log: log)) .Where(pch => pch != null) .ToList(); var change = new LdapChange(user.Sid, UserFormatter.GetUserName(user, DisplayUserNameFormat.Default), user.Email, LdapChangeType.User, LdapChangeAction.Add, fieldChanges); Add(change); }
public int Compare(UserInfo x, UserInfo y) { int result = 0; switch (SortOrder) { case UserSortOrder.DisplayName: result = UserFormatter.Compare(x, y); break; } return(!Descending ? result : -result); }
public void SetSaveAsPortalUserChange(UserInfo user) { var fieldChanges = new List <LdapItemChange> { new LdapItemChange(LdapItemChangeKey.Sid, user.Sid, null) }; var change = new LdapChange(user.Sid, UserFormatter.GetUserName(user, DisplayUserNameFormat.Default), user.Email, LdapChangeType.User, LdapChangeAction.SaveAsPortal, fieldChanges); Add(change); }
public void SetUpdateUserChange(UserInfo beforeUserInfo, UserInfo afterUserInfo, ILog log = null) { var fieldChanges = LdapUserMapping.Fields.Select(field => GetPropChange(field, beforeUserInfo, afterUserInfo, log)) .Where(pch => pch != null) .ToList(); var change = new LdapChange(beforeUserInfo.Sid, UserFormatter.GetUserName(afterUserInfo, DisplayUserNameFormat.Default), afterUserInfo.Email, LdapChangeType.User, LdapChangeAction.Update, fieldChanges); Add(change); }
public void SetRemoveGroupMembersChange(GroupInfo group, List <UserInfo> members) { var fieldChanges = members.Select( member => new LdapItemChange(LdapItemChangeKey.Member, null, UserFormatter.GetUserName(member, DisplayUserNameFormat.Default))).ToList(); var change = new LdapChange(group.Sid, group.Name, LdapChangeType.Group, LdapChangeAction.RemoveMember, fieldChanges); Add(change); }
public static string GetFullUserName(UserInfo userInfo, DisplayUserNameFormat format, bool withHtmlEncode) { if (userInfo == null || userInfo.ID.Equals(Common.Security.Authorizing.Constants.Demo.ID)) { return("Demo"); } if (!userInfo.ID.Equals(Guid.Empty) && !CoreContext.UserManager.UserExists(userInfo.ID)) { return("profile removed"); } var result = UserFormatter.GetUserName(userInfo, format); return(withHtmlEncode ? result.HtmlEncode() : result); }
private UserRosterItem ToUserRosterItem(UserInfo u, string server) { var item = new UserRosterItem(new Jid(u.UserName + "@" + server)) { Name = UserFormatter.GetUserName(u), Subscribtion = SubscriptionType.both, Ask = AskType.NONE, }; foreach (var g in ASCContext.UserManager.GetUserGroups(u.ID)) { item.Groups.Add(g.Name); } return(item); }
private UserInfo AddUser(UserInfo userInfo) { UserInfo newUserInfo; try { newUserInfo = userInfo.Clone() as UserInfo; if (newUserInfo == null) { return(Constants.LostUser); } _log.DebugFormat("Adding or updating user in database, userId={0}", userInfo.ID); SecurityContext.CurrentAccount = ASC.Core.Configuration.Constants.CoreSystem; if (string.IsNullOrEmpty(newUserInfo.UserName)) { var limitExceeded = TenantStatisticsProvider.GetUsersCount() >= TenantExtra.GetTenantQuota().ActiveUsers; newUserInfo = UserManagerWrapper.AddUser(newUserInfo, UserManagerWrapper.GeneratePassword(), true, false, isVisitor: limitExceeded); } else { if (!UserFormatter.IsValidUserName(userInfo.FirstName, userInfo.LastName)) { throw new Exception(Resource.ErrorIncorrectUserName); } CoreContext.UserManager.SaveUserInfo(newUserInfo); } /*var photoUrl = samlResponse.GetRemotePhotoUrl(); * if (!string.IsNullOrEmpty(photoUrl)) * { * var photoLoader = new UserPhotoLoader(); * photoLoader.SaveOrUpdatePhoto(photoUrl, userInfo.ID); * }*/ } finally { SecurityContext.Logout(); } return(newUserInfo); }
private static AuditEvent ToAuditEvent(object[] row) { try { var evt = new AuditEvent { Id = Convert.ToInt32(row[0]), IP = Convert.ToString(row[1]), Initiator = Convert.ToString(row[2]), Browser = Convert.ToString(row[3]), Mobile = Convert.ToBoolean(row[4]), Platform = Convert.ToString(row[5]), Date = TenantUtil.DateTimeFromUtc(Convert.ToDateTime(row[6])), TenantId = Convert.ToInt32(row[7]), UserId = Guid.Parse(Convert.ToString(row[8])), Page = Convert.ToString(row[9]), Action = Convert.ToInt32(row[10]) }; if (row[11] != null) { evt.Description = JsonConvert.DeserializeObject <IList <string> >(Convert.ToString(row[11]), new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Utc }); } evt.UserName = (row[12] != null && row[13] != null) ? UserFormatter.GetUserName(Convert.ToString(row[12]), Convert.ToString(row[13])) : evt.UserId == Core.Configuration.Constants.CoreSystem.ID ? AuditReportResource.SystemAccount : evt.UserId == Core.Configuration.Constants.Guest.ID ? AuditReportResource.GuestAccount : evt.Initiator ?? AuditReportResource.UnknownAccount; evt.ActionText = AuditActionMapper.GetActionText(evt); evt.ActionTypeText = AuditActionMapper.GetActionTypeText(evt); evt.Product = AuditActionMapper.GetProductText(evt); evt.Module = AuditActionMapper.GetModuleText(evt); return(evt); } catch (Exception) { //log.Error("Error while forming event from db: " + ex); return(null); } }
private void TurnOffLDAP() { const double percents = 48; SetProgress((int)percents, Resource.LdapSettingsModifyLdapUsers); var existingLDAPUsers = CoreContext.UserManager.GetUsers(EmployeeStatus.All).Where(u => u.Sid != null).ToList(); var step = percents / existingLDAPUsers.Count; var percentage = (double)GetProgress(); var index = 0; var count = existingLDAPUsers.Count; foreach (var existingLDAPUser in existingLDAPUsers) { SetProgress(Convert.ToInt32(percentage), currentSource: string.Format("({0}/{1}): {2}", ++index, count, UserFormatter.GetUserName(existingLDAPUser, DisplayUserNameFormat.Default))); switch (OperationType) { case LdapOperationType.Save: case LdapOperationType.Sync: existingLDAPUser.Sid = null; existingLDAPUser.ConvertExternalContactsToOrdinary(); Logger.DebugFormat("CoreContext.UserManager.SaveUserInfo({0})", existingLDAPUser.GetUserInfoString()); CoreContext.UserManager.SaveUserInfo(existingLDAPUser); break; case LdapOperationType.SaveTest: case LdapOperationType.SyncTest: _ldapChanges.SetSaveAsPortalUserChange(existingLDAPUser); break; default: throw new ArgumentOutOfRangeException(); } percentage += step; } }
public PeopleController( IOptionsMonitor <ILog> option, IOptionsSnapshot <HostedSolution> hostedSolutionOptions, UserFormatter userFormatter, ICache cache, CoreSettings coreSettings, CommonLinkUtility commonLinkUtility, IHttpContextAccessor httpContextAccessor) { Log = option.Get("ASC.ApiSystem.People"); HostedSolution = hostedSolutionOptions.Value; UserFormatter = userFormatter; Cache = cache; CoreSettings = coreSettings; CommonLinkUtility = commonLinkUtility; HttpContextAccessor = httpContextAccessor; }
private static LoginEvent ToLoginEvent(object[] row) { try { var evt = new LoginEvent { Id = Convert.ToInt32(row[0]), IP = Convert.ToString(row[1]), Login = Convert.ToString(row[2]), Browser = Convert.ToString(row[3]), Platform = Convert.ToString(row[4]), Date = TenantUtil.DateTimeFromUtc(Convert.ToDateTime(row[5])), TenantId = Convert.ToInt32(row[6]), UserId = Guid.Parse(Convert.ToString(row[7])), Page = Convert.ToString(row[8]), Action = Convert.ToInt32(row[9]) }; if (row[10] != null) { evt.Description = JsonConvert.DeserializeObject <IList <string> >( Convert.ToString(row[10]), new JsonSerializerSettings { DateTimeZoneHandling = DateTimeZoneHandling.Utc }); } evt.UserName = (row[11] != null && row[12] != null) ? UserFormatter.GetUserName(Convert.ToString(row[11]), Convert.ToString(row[12])) : !string.IsNullOrWhiteSpace(evt.Login) ? evt.Login : evt.UserId == Core.Configuration.Constants.Guest.ID ? AuditReportResource.GuestAccount : AuditReportResource.UnknownAccount; evt.ActionText = AuditActionMapper.GetActionText(evt); return(evt); } catch (Exception) { //log.Error("Error while forming event from db: " + ex); return(null); } }
private void SyncDbUsers(List <UserInfo> ldapUsers) { const double percents = 35; var step = percents / ldapUsers.Count; var percentage = (double)GetProgress(); if (!ldapUsers.Any()) { return; } var index = 0; var count = ldapUsers.Count; foreach (var userInfo in ldapUsers) { SetProgress(Convert.ToInt32(percentage), currentSource: string.Format("({0}/{1}): {2}", ++index, count, UserFormatter.GetUserName(userInfo, DisplayUserNameFormat.Default))); switch (OperationType) { case LdapOperationType.Save: case LdapOperationType.Sync: LDAPUserManager.SyncLDAPUser(userInfo, ldapUsers); break; case LdapOperationType.SaveTest: case LdapOperationType.SyncTest: LdapChangeCollection changes; LDAPUserManager.GetLDAPSyncUserChange(userInfo, ldapUsers, out changes); _ldapChanges.AddRange(changes); break; default: throw new ArgumentOutOfRangeException(); } percentage += step; } }