Example #1
0
        public GroupWrapperFull UpdateGroup(Guid groupid, GroupModel groupModel)
        {
            PermissionContext.DemandPermissions(Constants.Action_EditGroups, Constants.Action_AddRemoveUser);
            var group = UserManager.GetGroups().SingleOrDefault(x => x.ID == groupid).NotFoundIfNull("group not found");

            if (groupid == Constants.LostGroupInfo.ID)
            {
                throw new ItemNotFoundException("group not found");
            }

            group.Name = groupModel.GroupName ?? group.Name;
            UserManager.SaveGroupInfo(group);

            RemoveMembersFrom(new GroupModel {
                Groupid = groupid, Members = UserManager.GetUsersByGroup(groupid, EmployeeStatus.All).Select(u => u.ID).Where(id => !groupModel.Members.Contains(id))
            });

            TransferUserToDepartment(groupModel.GroupManager, @group, true);
            if (groupModel.Members != null)
            {
                foreach (var member in groupModel.Members)
                {
                    TransferUserToDepartment(member, group, false);
                }
            }

            MessageService.Send(MessageAction.GroupUpdated, MessageTarget.Create(groupid), group.Name);

            return(GetById(groupModel.Groupid));
        }
        private object SetKeys(PrivacyRoomModel model)
        {
            PermissionContext.DemandPermissions(new UserSecurityProvider(AuthContext.CurrentAccount.ID), Constants.Action_EditUser);

            if (!PrivacyRoomSettings.GetEnabled(SettingsManager))
            {
                throw new System.Security.SecurityException();
            }

            var keyPair = EncryptionKeyPairHelper.GetKeyPair();

            if (keyPair != null)
            {
                if (!string.IsNullOrEmpty(keyPair.PublicKey))
                {
                    return(new { isset = true });
                }

                Log.InfoFormat("User {0} updates address", AuthContext.CurrentAccount.ID);
            }

            EncryptionKeyPairHelper.SetKeyPair(model.PublicKey, model.PrivateKeyEnc);

            return(new
            {
                isset = true
            });
        }
Example #3
0
        private void DemandPermissionsBackup()
        {
            PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);

            if (!SetupInfo.IsVisibleSettings(ManagementType.Backup.ToString()))
            {
                throw new BillingException(Resource.ErrorNotAllowedOption, "Backup");
            }
        }
Example #4
0
        private void DemandPermissionsRestore()
        {
            PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);

            if (!SetupInfo.IsVisibleSettings("Restore"))
            {
                throw new BillingException(Resource.ErrorNotAllowedOption, "Restore");
            }
        }
        private void DemandPermissionsRestore()
        {
            PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);

            if (!SetupInfo.IsVisibleSettings("Restore") ||
                (!CoreBaseSettings.Standalone && !TenantManager.GetTenantQuota(TenantManager.GetCurrentTenant().TenantId).Restore))
            {
                throw new BillingException(Resource.ErrorNotAllowedOption, "Restore");
            }
        }
Example #6
0
        public IEnumerable <EventWrapper> GetLastAuditEvents()
        {
            if (!SetupInfo.IsVisibleSettings(ManagementType.AuditTrail.ToString()))
            {
                throw new BillingException(Resource.ErrorNotAllowedOption, "Audit");
            }

            PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);

            return(AuditEventsRepository.GetLast(TenantManager.GetCurrentTenant().TenantId, 20).Select(x => new EventWrapper(x)));
        }
Example #7
0
        public IEnumerable <EventWrapper> GetLastAuditEvents()
        {
            PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);

            if (!SetupInfo.IsVisibleSettings(ManagementType.LoginHistory.ToString()) || CoreBaseSettings.Standalone && !TenantExtra.GetTenantQuota().Audit)
            {
                throw new BillingException(Resource.ErrorNotAllowedOption, "Audit");
            }

            return(AuditEventsRepository.GetLast(TenantManager.GetCurrentTenant().TenantId, 20).Select(x => new EventWrapper(x)));
        }
Example #8
0
        public GroupWrapperFull AddMembersTo(GroupModel groupModel)
        {
            PermissionContext.DemandPermissions(Constants.Action_EditGroups, Constants.Action_AddRemoveUser);
            var group = GetGroupInfo(groupModel.Groupid);

            foreach (var userId in groupModel.Members)
            {
                TransferUserToDepartment(userId, group, false);
            }
            return(GetById(group.ID));
        }
Example #9
0
        public TenantAuditSettings GetAuditSettings()
        {
            if (!SetupInfo.IsVisibleSettings(ManagementType.LoginHistory.ToString()))
            {
                throw new BillingException(Resource.ErrorNotAllowedOption, "Audit");
            }

            PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);

            return(SettingsManager.LoadForTenant <TenantAuditSettings>(TenantManager.GetCurrentTenant().TenantId));
        }
        public EncryptionKeyPair GetKeys()
        {
            PermissionContext.DemandPermissions(new UserSecurityProvider(AuthContext.CurrentAccount.ID), Constants.Action_EditUser);

            if (!PrivacyRoomSettings.GetEnabled(SettingsManager))
            {
                throw new System.Security.SecurityException();
            }

            return(EncryptionKeyPairHelper.GetKeyPair());
        }
Example #11
0
        public GroupWrapperFull RemoveMembersFrom(GroupModel groupModel)
        {
            PermissionContext.DemandPermissions(Constants.Action_EditGroups, Constants.Action_AddRemoveUser);
            var group = GetGroupInfo(groupModel.Groupid);

            foreach (var userId in groupModel.Members)
            {
                RemoveUserFromDepartment(userId, group);
            }
            return(GetById(group.ID));
        }
Example #12
0
        public GroupWrapperFull DeleteGroup(Guid groupid)
        {
            PermissionContext.DemandPermissions(Constants.Action_EditGroups, Constants.Action_AddRemoveUser);
            var @group           = GetGroupInfo(groupid);
            var groupWrapperFull = GroupWraperFullHelper.Get(group, false);

            UserManager.DeleteGroup(groupid);

            MessageService.Send(MessageAction.GroupDeleted, MessageTarget.Create(group.ID), group.Name);

            return(groupWrapperFull);
        }
Example #13
0
        private void DemandPermissionsTransfer()
        {
            PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);

            var currentUser = UserManager.GetUsers(SecurityContext.CurrentAccount.ID);

            if (!SetupInfo.IsVisibleSettings(ManagementType.Migration.ToString()) ||
                !currentUser.IsOwner(TenantManager.GetCurrentTenant()) ||
                !SetupInfo.IsSecretEmail(currentUser.Email) && !TenantExtra.GetTenantQuota().HasMigration)
            {
                throw new InvalidOperationException(Resource.ErrorNotAllowedOption);
            }
        }
Example #14
0
        public SmtpSettingsWrapper ResetSmtpSettings()
        {
            CheckSmtpPermissions();

            if (!CoreConfiguration.SmtpSettings.IsDefaultSettings)
            {
                PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);
                CoreConfiguration.SmtpSettings = null;
            }

            var current = CoreBaseSettings.Standalone ? CoreConfiguration.SmtpSettings : SmtpSettings.Empty;

            return(ToSmtpSettings(current, true));
        }
Example #15
0
        public GroupWrapperFull TransferMembersTo(TransferGroupMembersModel transferGroupMembersModel)
        {
            PermissionContext.DemandPermissions(Constants.Action_EditGroups, Constants.Action_AddRemoveUser);
            var oldgroup = GetGroupInfo(transferGroupMembersModel.GroupId);

            var newgroup = GetGroupInfo(transferGroupMembersModel.NewGroupId);

            var users = UserManager.GetUsersByGroup(oldgroup.ID);

            foreach (var userInfo in users)
            {
                TransferUserToDepartment(userInfo.ID, newgroup, false);
            }
            return(GetById(transferGroupMembersModel.NewGroupId));
        }
        private bool SetPrivacyRoom(PrivacyRoomModel model)
        {
            PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);

            if (model.Enable)
            {
                if (!PrivacyRoomSettings.IsAvailable(TenantManager))
                {
                    throw new BillingException(Resource.ErrorNotAllowedOption, "PrivacyRoom");
                }
            }

            PrivacyRoomSettings.SetEnabled(TenantManager, SettingsManager, model.Enable);

            MessageService.Send(model.Enable ? MessageAction.PrivacyRoomEnable : MessageAction.PrivacyRoomDisable);

            return(model.Enable);
        }
Example #17
0
        public TenantAuditSettings SetAuditSettings(TenantAuditSettings settings)
        {
            PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);

            if (settings.LoginHistoryLifeTime <= 0 || settings.LoginHistoryLifeTime > TenantAuditSettings.MaxLifeTime)
            {
                throw new ArgumentException("LoginHistoryLifeTime");
            }

            if (settings.AuditTrailLifeTime <= 0 || settings.AuditTrailLifeTime > TenantAuditSettings.MaxLifeTime)
            {
                throw new ArgumentException("AuditTrailLifeTime");
            }

            SettingsManager.SaveForTenant(settings, TenantManager.GetCurrentTenant().TenantId);
            MessageService.Send(MessageAction.AuditSettingsUpdated);

            return(settings);
        }
Example #18
0
        public SmtpSettingsWrapper SaveSmtpSettings(SmtpSettingsWrapper smtpSettings)
        {
            CheckSmtpPermissions();

            //TODO: Add validation check

            if (smtpSettings == null)
            {
                throw new ArgumentNullException("smtpSettings");
            }

            PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);

            var settingConfig = ToSmtpSettingsConfig(smtpSettings);

            CoreConfiguration.SmtpSettings = settingConfig;

            var settings = ToSmtpSettings(settingConfig, true);

            return(settings);
        }
Example #19
0
        public GroupWrapperFull AddGroup(GroupModel groupModel)
        {
            PermissionContext.DemandPermissions(Constants.Action_EditGroups, Constants.Action_AddRemoveUser);

            var group = UserManager.SaveGroupInfo(new GroupInfo {
                Name = groupModel.GroupName
            });

            TransferUserToDepartment(groupModel.GroupManager, @group, true);
            if (groupModel.Members != null)
            {
                foreach (var member in groupModel.Members)
                {
                    TransferUserToDepartment(member, group, false);
                }
            }

            MessageService.Send(MessageAction.GroupCreated, MessageTarget.Create(group.ID), group.Name);

            return(GroupWraperFullHelper.Get(group, true));
        }
Example #20
0
        public object UpdateAddress(string address, string publicKey)
        {
            PermissionContext.DemandPermissions(new UserSecurityProvider(AuthContext.CurrentAccount.ID), Constants.Action_EditUser);

            if (string.IsNullOrEmpty(address))
            {
                throw new ArgumentNullException("address");
            }
            if (string.IsNullOrEmpty(publicKey))
            {
                throw new ArgumentNullException("publicKey");
            }

            var currentAddressString = EncryptionLoginProvider.GetAddress();

            if (!string.IsNullOrEmpty(currentAddressString))
            {
                var currentAddress = JsonConvert.DeserializeObject <EncryptionAddress>(currentAddressString);
                if (currentAddress != null &&
                    !string.IsNullOrEmpty(currentAddress.PublicKey) &&
                    currentAddress.PublicKey.Equals(publicKey))
                {
                    return(new { isset = true });
                }

                Log.InfoFormat("User {0} updates address", AuthContext.CurrentAccount.ID);
            }

            var account = new EncryptionAddress {
                Address = address, PublicKey = publicKey
            };
            var accountString = JsonConvert.SerializeObject(account);

            EncryptionLoginProvider.UpdateAddress(accountString);

            return(new
            {
                isset = !string.IsNullOrEmpty(EncryptionLoginProvider.GetAddress())
            });
        }
Example #21
0
        public object CreateLoginHistoryReport()
        {
            PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);

            var tenantId = TenantManager.GetCurrentTenant().TenantId;

            if (!SetupInfo.IsVisibleSettings(ManagementType.LoginHistory.ToString()) || CoreBaseSettings.Standalone && !TenantExtra.GetTenantQuota().Audit)
            {
                throw new BillingException(Resource.ErrorNotAllowedOption, "Audit");
            }

            var settings = SettingsManager.LoadForTenant <TenantAuditSettings>(TenantManager.GetCurrentTenant().TenantId);

            var to   = DateTime.UtcNow;
            var from = to.Subtract(TimeSpan.FromDays(settings.LoginHistoryLifeTime));

            var reportName = string.Format(AuditReportResource.LoginHistoryReportName + ".csv", from.ToString("MM.dd.yyyy"), to.ToString("MM.dd.yyyy"));
            var events     = LoginEventsRepository.Get(tenantId, from, to);
            var result     = AuditReportCreator.CreateCsvReport(events, reportName);

            MessageService.Send(MessageAction.LoginHistoryReportDownloaded);
            return(result);
        }
Example #22
0
        private TenantAuditSettings SetAuditSettings(TenantAuditSettingsWrapper wrapper)
        {
            if (!TenantExtra.GetTenantQuota().Audit || !SetupInfo.IsVisibleSettings(ManagementType.LoginHistory.ToString()))
            {
                throw new BillingException(Resource.ErrorNotAllowedOption, "Audit");
            }

            PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);

            if (wrapper.settings.LoginHistoryLifeTime <= 0 || wrapper.settings.LoginHistoryLifeTime > TenantAuditSettings.MaxLifeTime)
            {
                throw new ArgumentException("LoginHistoryLifeTime");
            }

            if (wrapper.settings.AuditTrailLifeTime <= 0 || wrapper.settings.AuditTrailLifeTime > TenantAuditSettings.MaxLifeTime)
            {
                throw new ArgumentException("AuditTrailLifeTime");
            }

            SettingsManager.SaveForTenant(wrapper.settings, TenantManager.GetCurrentTenant().TenantId);
            MessageService.Send(MessageAction.AuditSettingsUpdated);

            return(wrapper.settings);
        }
        public bool PrivacyRoom()
        {
            PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);

            return(PrivacyRoomSettings.GetEnabled(SettingsManager));
        }
Example #24
0
        public TenantAuditSettings GetAuditSettings()
        {
            PermissionContext.DemandPermissions(SecutiryConstants.EditPortalSettings);

            return(SettingsManager.LoadForTenant <TenantAuditSettings>(TenantManager.GetCurrentTenant().TenantId));
        }
Example #25
0
 public string GeInviteLink(EmployeeType employeeType)
 {
     PermissionContext.DemandPermissions(Constants.Action_AddRemoveUser);
     return(CommonLinkUtility.GetConfirmationUrl(string.Empty, ConfirmType.LinkInvite, (int)employeeType)
            + $"&emplType={employeeType:d}");
 }