public ClaimsIdentity GenerateClaimsIdentityForUser(IIdentityUser user)
 {
     return(new ClaimsIdentity(new Claim[] {
         new Claim(ClaimTypes.Name, user.UserName),
         new Claim(ClaimTypes.NameIdentifier, user.Id)
     }));
 }
        public FileChangeFileMarkValidator(IAlfrescoHttpClient alfrescoHttpClient, IIdentityUser identityUser, INodesService nodesService)
        {
            RuleFor(o => o)
            .Cascade(CascadeMode.StopOnFirstFailure)
            .MustAsync(async(context, cancellationToken) =>
            {
                _nodeEntry = await alfrescoHttpClient.GetNodeInfo(context.NodeId, ImmutableList <Parameter> .Empty
                                                                  .Add(new Parameter(AlfrescoNames.Headers.Include, AlfrescoNames.Includes.Path, ParameterType.QueryString)));
                _groupPaging = await alfrescoHttpClient.GetPersonGroups(identityUser.Id);


                return(_nodeEntry?.Entry?.Id != null && _groupPaging != null);
            })
            .WithName(x => nameof(x.NodeId))
            .WithMessage("Something went wrong with alfresco server.")
            .DependentRules(() =>
            {
                RuleFor(x => x)
                .Must(y => _groupPaging?.List?.Entries?.Any(q => q.Entry.Id == identityUser.RequestGroup) ?? false)
                .WithName(x => "Group")
                .WithMessage($"User isn't member of group {identityUser.RequestGroup}.");

                RuleFor(x => x.NodeId)
                .Must(x => _nodeEntry?.Entry?.NodeType == SpisumNames.NodeTypes.File)
                .WithMessage($"NodeId must be type of {SpisumNames.NodeTypes.File}.");
            });
        }
Пример #3
0
        public FileDocumentAddValidator(IAlfrescoHttpClient alfrescoHttpClient, IIdentityUser identityUser)
        {
            RuleFor(o => o)
            .Cascade(CascadeMode.StopOnFirstFailure)
            .MustAsync(async(context, cancellationToken) =>
            {
                _nodeEntry   = await alfrescoHttpClient.GetNodeInfo(context.NodeId);
                _groupPaging = await alfrescoHttpClient.GetPersonGroups(identityUser.Id);

                return(_nodeEntry?.Entry?.Id != null && _groupPaging != null);
            })
            .WithName(x => nameof(x.NodeId))
            .WithMessage("Something went wrong with alfresco server.")
            .DependentRules(() =>
            {
                RuleFor(x => x)
                .Must(y => _groupPaging?.List?.Entries?.Any(q => q.Entry.Id == identityUser.RequestGroup) ?? false)
                .WithName(x => "Group")
                .WithMessage($"User isn't member of group {identityUser.RequestGroup}.");

                RuleFor(x => x.NodeId)
                .Must(x => _nodeEntry.Entry.NodeType == SpisumNames.NodeTypes.File)
                .WithMessage(x => $"Provided nodeId must be NodeType {SpisumNames.NodeTypes.File}");
            });
        }
Пример #4
0
 public CommentService(SnsdbContext snsdbContext,
                       IMapper mapper, IIdentityUser <int, LoginAuthModel> identityUser)
 {
     _snsdbContext = snsdbContext;
     _mapper       = mapper;
     _identityUser = identityUser;
 }
Пример #5
0
 public SignerService(
     ISignerClient signerClient,
     ISimpleMemoryCache simpleMemoryCache,
     IAlfrescoConfiguration alfrescoConfiguration,
     IPersonService personService,
     IIdentityUser identityUser,
     IMapper mapper,
     ITransactionHistoryService transactionHistoryService,
     IAuditLogService auditLogService,
     IRepositoryService repositoryService,
     IAlfrescoHttpClient alfrescoHttpClient,
     IPdfService pdfService,
     ISystemLoginService systemLoginService
     )
 {
     _signerClient          = signerClient;
     _simpleMemoryCache     = simpleMemoryCache;
     _alfrescoConfiguration = alfrescoConfiguration;
     _personService         = personService;
     _identityUser          = identityUser;
     _mapper = mapper;
     _transactionHistoryService = transactionHistoryService;
     _auditLogService           = auditLogService;
     _repositoryService         = repositoryService;
     _alfrescoHttpClient        = alfrescoHttpClient;
     _pdfService         = pdfService;
     _systemLoginService = systemLoginService;
 }
        public DocumentForSignatureValidator(
            IAlfrescoHttpClient alfrescoHttpClient,
            IIdentityUser identityUser,
            IAlfrescoConfiguration alfrescoConfiguration,
            ISimpleMemoryCache simpleMemoryCache,
            ISystemLoginService systemLoginService)
        {
            var adminHttpClient = new AlfrescoHttpClient(alfrescoConfiguration, new AdminAuthentification(simpleMemoryCache, alfrescoConfiguration, systemLoginService));

            RuleFor(o => o)
            .Cascade(CascadeMode.StopOnFirstFailure)
            .MustAsync(async(context, cancellationToken) =>
            {
                _nodeEntry = await alfrescoHttpClient.GetNodeInfo(context.NodeId, ImmutableList <Parameter> .Empty
                                                                  .Add(new Parameter(AlfrescoNames.Headers.Include, $"{AlfrescoNames.Includes.Path}", ParameterType.QueryString)));
                _groupPagingCurrentUser = await alfrescoHttpClient.GetPersonGroups(identityUser.Id);
                _groupPagingNextOwner   = await adminHttpClient.GetPersonGroups(context.Body.User);

                return(_nodeEntry?.Entry?.Id != null && _groupPagingCurrentUser != null && _groupPagingNextOwner != null);
            })
            .WithName(x => nameof(x.NodeId))
            .WithMessage("Something went wrong with alfresco server.")
            .DependentRules(() =>
            {
                RuleFor(x => x)
                .Must(y => _groupPagingCurrentUser?.List?.Entries?.Any(q => q.Entry.Id == identityUser.RequestGroup) ?? false)
                .WithName(x => "Group")
                .WithMessage($"User isn't member of group {identityUser.RequestGroup}.");

                RuleFor(x => x)
                .Must(y => _groupPagingNextOwner?.List?.Entries?.Any(q => q.Entry.Id == $"{y.Body.Group}_Sign") ?? false)
                .WithName(x => "Group")
                .WithMessage("User for signing isn't member of group with postfix _Sign.");

                RuleFor(x => x.NodeId)
                .Must(x => _nodeEntry?.Entry?.NodeType == SpisumNames.NodeTypes.Document)
                .WithMessage($"NodeId must be type of {SpisumNames.NodeTypes.Document}.");

                RuleFor(x => x)
                .Must(x => _nodeEntry?.Entry?.Path?.Name?.StartsWith(AlfrescoNames.Prefixes.Path + SpisumNames.Paths.Evidence, StringComparison.OrdinalIgnoreCase) == true)
                .OnAnyFailure(x => throw new BadRequestException("Document must be in evidence site."));

                RuleFor(x => x.NodeId)
                .Must(x => _nodeEntry.Entry.Path.Name.Equals(AlfrescoNames.Prefixes.Path + SpisumNames.Paths.EvidenceDocumentsForProcessing(identityUser.RequestGroup)) ||
                      _nodeEntry.Entry.Path.Name.Equals(AlfrescoNames.Prefixes.Path + SpisumNames.Paths.EvidenceFilesDocumentsForProcessing(identityUser.RequestGroup)))
                .WithMessage($"NodeId must be in path {SpisumNames.Paths.EvidenceDocumentsForProcessing(identityUser.RequestGroup)} or {SpisumNames.Paths.EvidenceFilesDocumentsForProcessing(identityUser.RequestGroup)}.");
            });

            RuleFor(x => x)
            .Must(x => !string.IsNullOrEmpty(x?.Body?.User))
            .When(x => x?.Body != null)
            .WithName(x => nameof(x.Body.User))
            .WithMessage("You have to fill user.");

            RuleFor(x => x)
            .Must(x => !string.IsNullOrEmpty(x?.Body?.Group))
            .When(x => x?.Body != null)
            .WithName(x => nameof(x.Body.Group))
            .WithMessage("You have to fill group.");
        }
#pragma warning disable 4014
        public virtual async Task CreateAsync(TUser user)
        {
            IIdentityUser identityUser = user;

            IDatabase    db          = Database;
            ITransaction transaction = CreateTransaction();

            if (string.IsNullOrEmpty(identityUser.Id))
            {
                identityUser.Id = (await db.StringIncrementAsync(UserIdKey)).ToString();
            }

            transaction.HashSetAsync
            (
                UserHashByIdKey,
                new[]
            {
                new HashEntry(identityUser.Id, JsonConvert.SerializeObject(user))
            }
            );

            transaction.HashSetAsync
            (
                UserHashByNameKey,
                new[]
            {
                new HashEntry(user.UserName, identityUser.Id)
            }
            );

            await transaction.ExecuteAsync();
        }
Пример #8
0
        public DocumentSettleCancelValidator(IAlfrescoHttpClient alfrescoHttpClient, IIdentityUser identityUser)
        {
            RuleFor(o => o)
            .Cascade(CascadeMode.StopOnFirstFailure)
            .MustAsync(async(context, cancellationToken) =>
            {
                _nodeEntry = await alfrescoHttpClient.GetNodeInfo(context.NodeId, ImmutableList <Parameter> .Empty
                                                                  .Add(new Parameter(AlfrescoNames.Headers.Include, AlfrescoNames.Includes.Path, ParameterType.QueryString)));
                _groupPaging = await alfrescoHttpClient.GetPersonGroups(identityUser.Id);

                return(_nodeEntry?.Entry?.Id != null && _groupPaging != null);
            })
            .WithName(x => nameof(x.NodeId))
            .WithMessage("Something went wrong with alfresco server.")
            .DependentRules(() =>
            {
                RuleFor(x => x)
                .Must(y => _groupPaging?.List?.Entries?.Any(q => q.Entry.Id == identityUser.RequestGroup) ?? false)
                .WithName(x => "Group")
                .WithMessage($"User isn't member of group {identityUser.RequestGroup}.");

                RuleFor(x => x.NodeId)
                .Must(x => _nodeEntry.Entry.NodeType == SpisumNames.NodeTypes.Document)
                .WithMessage(x => $"Provided nodeId must be NodeType {SpisumNames.NodeTypes.Document}");

                RuleFor(x => x.NodeId)
                .Must(x => _nodeEntry.Entry.Path.Name.Equals(AlfrescoNames.Prefixes.Path + SpisumNames.Paths.EvidenceDocumentsProcessed(identityUser.RequestGroup)) ||
                      _nodeEntry.Entry.Path.Name.Equals(AlfrescoNames.Prefixes.Path + SpisumNames.Paths.EvidenceFilesDocumentsProcessed(identityUser.RequestGroup)))
                .WithMessage($"NodeId must be in path {SpisumNames.Paths.EvidenceDocumentsProcessed(identityUser.RequestGroup)} or {SpisumNames.Paths.EvidenceFilesDocumentsProcessed(identityUser.RequestGroup)}.");
            });

            RuleFor(x => x)
            .Must(CheckReasonLength);
        }
Пример #9
0
 public DocumentController(
     IAlfrescoHttpClient alfrescoHttpClient,
     IAuditLogService auditLogService,
     IComponentService componentService,
     IDocumentService documentService,
     IIdentityUser identityUser,
     INodesService nodesService,
     ISpisUmConfiguration spisUmConfiguration,
     ITransactionHistoryService transactionHistory,
     IShipmentsService shipmentsService,
     IValidationService validationService,
     IAlfrescoModelComparer alfrescoModelComparer,
     ITranslateService translateService
     )
 {
     _alfrescoHttpClient    = alfrescoHttpClient;
     _auditLogService       = auditLogService;
     _componentService      = componentService;
     _documentService       = documentService;
     _identityUser          = identityUser;
     _nodesService          = nodesService;
     _shipmentsService      = shipmentsService;
     _spisUmConfiguration   = spisUmConfiguration;
     _transactionHistory    = transactionHistory;
     _validationService     = validationService;
     _alfrescoModelComparer = alfrescoModelComparer;
     _translateService      = translateService;
 }
Пример #10
0
        public ShipmentReturnValidator(IAlfrescoHttpClient alfrescoHttpClient, IIdentityUser identityUser)
        {
            RuleFor(o => o)
            .Cascade(CascadeMode.StopOnFirstFailure)
            .MustAsync(async(context, cancellationToken) =>
            {
                _groupPaging = await alfrescoHttpClient.GetPersonGroups(identityUser.Id);

                return(_groupPaging != null);
            })
            .WithName(x => nameof(x))
            .WithMessage("Something went wrong with alfresco server.")
            .DependentRules(() =>
            {
                RuleFor(x => x)
                .Must(y => _groupPaging?.List?.Entries?.Any(q => q.Entry.Id == identityUser.RequestGroup) ?? false)
                .WithName(x => "Group")
                .WithMessage($"User isn't member of group {identityUser.RequestGroup}.");
            });

            RuleFor(x => x.Reason)
            .MinimumLength(4)
            .MaximumLength(30)
            .WithName("Reason")
            .WithMessage("Reason must be at least 4 chatacters long and maximum 30 characters");
        }
        public DocumentToRepositoryValidator(IAlfrescoHttpClient alfrescoHttpClient, IIdentityUser identityUser)
        {
            RuleFor(o => o)
            .Cascade(CascadeMode.StopOnFirstFailure)
            .MustAsync(async(context, cancellationToken) =>
            {
                _groupMember = await alfrescoHttpClient.GetGroupMembers(SpisumNames.Groups.RepositoryGroup, ImmutableList <Parameter> .Empty
                                                                        .Add(new Parameter(AlfrescoNames.Headers.Where, AlfrescoNames.MemberType.Group, ParameterType.QueryString)));
                _groupPaging = await alfrescoHttpClient.GetPersonGroups(identityUser.Id);

                return(_groupMember != null && _groupPaging != null);
            })
            .WithName(x => nameof(x.Group))
            .WithMessage("Something went wrong with alfresco server.")
            .DependentRules(() =>
            {
                RuleFor(x => x)
                .Must(y => _groupPaging?.List?.Entries?.Any(q => q.Entry.Id == identityUser.RequestGroup) ?? false)
                .WithName(x => "Group")
                .WithMessage($"User isn't member of group {identityUser.RequestGroup}.");

                RuleFor(x => x)
                .Must(y => _groupMember?.List?.Entries?.Any(q => q.Entry.Id == y.Group) ?? false)
                .WithName(x => "Group")
                .WithMessage(x => $"Group {x.Group} does not exists.");
            });
        }
        public ShipmentCancelValidator(IAlfrescoHttpClient alfrescoHttpClient, IIdentityUser identityUser)
        {
            RuleFor(o => o)
            .Cascade(CascadeMode.StopOnFirstFailure)
            .MustAsync(async(context, cancellationToken) =>
            {
                _groupPaging = await alfrescoHttpClient.GetPersonGroups(identityUser.Id);
                await context.NodeIds.ForEachAsync(async x => { _nodeEntries.Add(await alfrescoHttpClient.GetNodeInfo(x)); });

                return(_groupPaging != null && _nodeEntries?.Count != 0);
            })
            .WithName("Document")
            .WithMessage("Something went wrong with alfresco server.")
            .DependentRules(() =>
            {
                RuleFor(x => x)
                .Must(y => _groupPaging?.List?.Entries?.Any(q => q.Entry.Id == identityUser.RequestGroup) ?? false)
                .WithName(x => "Group")
                .WithMessage($"User isn't member of group {identityUser.RequestGroup}.");

                RuleFor(x => x)
                .Must(y => _nodeEntries?.All(q => q.Entry.NodeType.StartsWith("ssl:shipment")) ?? false)
                .WithName(x => "NodeIds")
                .WithMessage("Not all provided nodes are type of shipment.");
            });
        }
Пример #13
0
        public DocumentCreateValidator(IAlfrescoHttpClient alfrescoHttpClient, IIdentityUser identityUser)
        {
            RuleFor(o => o)
            .Cascade(CascadeMode.StopOnFirstFailure)
            .MustAsync(async(context, cancellationToken) =>
            {
                _groupPaging = await alfrescoHttpClient.GetPersonGroups(identityUser.Id);

                return(_groupPaging != null);
            })
            .WithName(x => nameof(x.NodeId))
            .WithMessage("Something went wrong with alfresco server.")
            .DependentRules(() =>
            {
                RuleFor(x => x)
                .Must(y => _groupPaging?.List?.Entries?.Any(q => q.Entry.Id == identityUser.RequestGroup) ?? false)
                .WithName(x => "Group")
                .WithMessage($"User isn't member of group {identityUser.RequestGroup}.");

                RuleFor(x => x)
                .Must(y => identityUser.RequestGroup == SpisumNames.Groups.MailroomGroup)
                .WithName(x => "Group")
                .WithMessage($"User is not member of {SpisumNames.Groups.MailroomGroup} group.");
            });

            RuleFor(x => x.DocumentType)
            .Must(x => x == null || CodeLists.DocumentTypes.List.TryGetValue(x, out string _))
            .WithMessage($"DocumentType must be one of [{string.Join(",", CodeLists.DocumentTypes.List.Select(x => x.Key).ToArray())}]");
        }
Пример #14
0
        public async Task WriteReportAsync(IIdentityUser user, string reportName)
        {
            try
            {
                if (_context == null)
                {
                    return;
                }

                await _context.AuditCollection.InsertOneAsync(new AuditEntity
                {
                    Action               = $"{AuditOperation.ReportOpened}",
                    Date                 = DateTime.UtcNow,
                    ObjectId             = -1,
                    ObjectTypeId         = -1,
                    UserId               = user.ItemId,
                    AdditionalParameters = new Dictionary <string, object>()
                    {
                        ["ReportName"] = reportName
                    }
                });
            }
            catch
            { }
        }
Пример #15
0
        public void CreateUser(IIdentityUser user)
        {
            var connection = Helper.Helper.GetConnectionString();
            var context    = new DataContext(connection);

            context.UserDtos.Add((UserDTO)user);
            context.SaveChanges();
        }
Пример #16
0
 public AccountService(SnsdbContext snsdbContext,
                       IWebHostEnvironment webHostEnvironment,
                       IIdentityUser <int, LoginAuthModel> identityUser)
 {
     _snsdbContext       = snsdbContext;
     _webHostEnvironment = webHostEnvironment;
     _identityUser       = identityUser;
 }
        public FileShreddingDiscardValidator(IAlfrescoHttpClient alfrescoHttpClient, IIdentityUser identityUser)
        {
            RuleFor(o => o)
            .Cascade(CascadeMode.StopOnFirstFailure)
            .MustAsync(async(context, cancellationToken) =>
            {
                _nodeEntry = await alfrescoHttpClient.GetNodeInfo(context.NodeId, ImmutableList <Parameter> .Empty
                                                                  .Add(new Parameter(AlfrescoNames.Headers.Include, $"{AlfrescoNames.Includes.Properties}, {AlfrescoNames.Includes.Path}",
                                                                                     ParameterType.QueryString)));

                _parentRM = await alfrescoHttpClient.GetNodeParents(context.NodeId, ImmutableList <Parameter> .Empty
                                                                    .Add(new Parameter(AlfrescoNames.Headers.Include, AlfrescoNames.Includes.Properties, ParameterType.QueryString))
                                                                    .Add(new Parameter(AlfrescoNames.Headers.Where, $"(assocType='{SpisumNames.Associations.FileInRepository}')", ParameterType.QueryString))
                                                                    .Add(new Parameter(AlfrescoNames.Headers.MaxItems, "1", ParameterType.QueryString)));

                if (_parentRM?.List?.Entries?.Count == 1)
                {
                    var documentInfo         = await alfrescoHttpClient.GetNodeInfo(_parentRM?.List?.Entries?.FirstOrDefault()?.Entry?.Id);
                    var rmdocumentProperties = documentInfo?.Entry?.Properties?.As <JObject>().ToDictionary();
                    _cutOffDate = rmdocumentProperties.GetNestedValueOrDefault(AlfrescoNames.ContentModel.CutOffDate)?.ToString();
                }

                _groupPaging = await alfrescoHttpClient.GetPersonGroups(identityUser.Id);

                return(_nodeEntry != null && _groupPaging != null && _parentRM != null);
            })
            .WithName(x => nameof(x.NodeId))
            .WithMessage("Something went wrong with alfresco server.")
            .DependentRules(() =>
            {
                RuleFor(x => x)
                .Must(y => _groupPaging?.List?.Entries?.Any(q => q.Entry.Id == identityUser.RequestGroup) ?? false)
                .WithName(x => "Group")
                .WithMessage($"User isn't member of group {identityUser.RequestGroup}.");

                RuleFor(x => x.NodeId)
                .Must(x => _nodeEntry?.Entry?.NodeType == SpisumNames.NodeTypes.File)
                .WithMessage($"NodeId must be type of {SpisumNames.NodeTypes.File}.");

                RuleFor(x => x.NodeId)
                .Must(x => _parentRM?.List?.Entries.Count == 1)
                .WithMessage(x => "File is not in record management");

                RuleFor(x => x.NodeId)
                .Must(x => !string.IsNullOrWhiteSpace(_cutOffDate))
                .WithMessage(x => "Cut off date is not set yet");
            });

            RuleFor(x => x.Body.Date)
            .Must(x => x.HasValue ? x.Value.Date >= DateTime.UtcNow.Date : true)
            .When(w => w.Body != null)
            .WithMessage("Date can't be in the past");

            RuleFor(x => x.Body.Reason)
            .MinimumLength(4)
            .MaximumLength(30)
            .When(x => x.Body != null);
        }
Пример #18
0
 public ArticleService(SnsdbContext snsdbContext, IIdentityUser <int, LoginAuthModel> identityUser,
                       IDistributedCache distributedCache,
                       IHttpContextAccessor httpContextAccessor)
 {
     _snsdbContext        = snsdbContext;
     _identityUser        = identityUser;
     _distributedCache    = distributedCache;
     _httpContextAccessor = httpContextAccessor;
 }
Пример #19
0
 public ComponentService(IAlfrescoHttpClient alfrescoHttpClient, INodesService nodesService, IPersonService personService,
                         IIdentityUser identityUser, IAuditLogService auditLogService)
 {
     _alfrescoHttpClient = alfrescoHttpClient;
     _nodesService       = nodesService;
     _personService      = personService;
     _identityUser       = identityUser;
     _auditLogService    = auditLogService;
 }
Пример #20
0
 public ValidationService(IAlfrescoHttpClient alfrescoHttpClient, ISignerService signerService, IPdfService pdfService, IComponentService componentService, ISignerClient signerClient, IIdentityUser identityUser, ISignerConfiguration signerConfiguration)
 {
     _signerService       = signerService;
     _pdfService          = pdfService;
     _componentService    = componentService;
     _signerClient        = signerClient;
     _identityUser        = identityUser;
     _alfrescoHttpClient  = alfrescoHttpClient;
     _signerConfiguration = signerConfiguration;
 }
Пример #21
0
 public User(IIdentityUser user)
 {
     ItemId = user.ItemId;
     SmartCoreObjectType = SmartCoreType.User;
     Name        = user.Name;
     Surname     = user.Surname;
     Login       = user.Login;
     Password    = user.Password;
     UserType    = user.UserType;
     UiType      = user.UiType;
     PersonnelId = user.PersonnelId;
 }
Пример #22
0
 public MedicalRepService(
     IUnitWork unitWork,
     IMedicalRepRepo repo,
     IWebHostEnvironment environment,
     IMapper mapper,
     IIdentityUser identityUser) : base(environment)
 {
     _unitWork     = unitWork;
     _repo         = repo;
     _mapper       = mapper;
     _identityUser = identityUser;
 }
Пример #23
0
 public AuthenticationController(
     IAlfrescoHttpClient alfrescoHttpClient,
     IAuthorizationService authorizationService,
     IIdentityUser identityUser,
     ISimpleMemoryCache simpleMemoryCache
     )
 {
     _alfrescoHttpClient   = alfrescoHttpClient;
     _authorizationService = authorizationService;
     _identityUser         = identityUser;
     _simpleMemoryCache    = simpleMemoryCache;
 }
Пример #24
0
        public FileCloseValidator(IAlfrescoHttpClient alfrescoHttpClient, IIdentityUser identityUser)
        {
            RuleFor(o => o)
            .Cascade(CascadeMode.StopOnFirstFailure)
            .MustAsync(async(context, cancellationToken) =>
            {
                _nodeEntry = await alfrescoHttpClient.GetNodeInfo(context.NodeId, ImmutableList <Parameter> .Empty
                                                                  .Add(new Parameter(AlfrescoNames.Headers.Include, $"{AlfrescoNames.Includes.Path},{AlfrescoNames.Includes.Properties}", ParameterType.QueryString)));
                _groupPaging = await alfrescoHttpClient.GetPersonGroups(identityUser.Id);

                return(_groupPaging != null && _nodeEntry?.Entry?.Id != null);
            })
            .WithName("Document")
            .WithMessage("Something went wrong with alfresco server.")
            .DependentRules(() =>
            {
                RuleFor(x => x)
                .Must(y => _groupPaging?.List?.Entries?.Any(q => q.Entry.Id == identityUser.RequestGroup) ?? false)
                .WithName(x => "Group")
                .WithMessage($"User isn't member of group {identityUser.RequestGroup}.");

                RuleFor(x => x.NodeId)
                .Must(x => _nodeEntry.Entry.NodeType == SpisumNames.NodeTypes.File)
                .WithMessage(x => $"Provided nodeId must be NodeType {SpisumNames.NodeTypes.File}");
            });

            RuleFor(x => x)
            .Must(x =>
            {
                if (x?.Body?.SettleMethod != "jinyZpusob")
                {
                    return(true);
                }

                if (x?.Body?.CustomSettleMethod == null || x?.Body?.SettleReason == null)
                {
                    return(false);
                }

                if (x.Body.CustomSettleMethod.Length < 4 || x.Body.SettleReason.Length < 4)
                {
                    throw new BadRequestException(ErrorCodes.V_MIN_TEXT);
                }

                x.Body.CustomSettleMethod = x.Body.CustomSettleMethod.CutLength(30);
                x.Body.SettleReason       = x.Body.SettleReason.CutLength(30);

                return(true);
            })
            .WithName(x => nameof(x.Body.SettleMethod))
            .WithMessage("You have to fill CustomSettleMethod and SettleReason.");
        }
Пример #25
0
        public static string ToJwtToken <TKey>(this IIdentityUser <TKey> user, string secret, string issuer, string audience, DateTime?expires)
        {
            var claims = new[]
            {
                new Claim(JwtRegisteredClaimNames.Sub, user.Email),
                new Claim(JwtRegisteredClaimNames.Jti, Guid.NewGuid().ToString()),
            };
            var key   = new SymmetricSecurityKey(Encoding.UTF8.GetBytes(secret));
            var creds = new SigningCredentials(key, SecurityAlgorithms.HmacSha256);
            var token = new JwtSecurityToken(issuer, audience, claims, expires: expires, signingCredentials: creds);

            return(new JwtSecurityTokenHandler().WriteToken(token));
        }
Пример #26
0
 public EmailDataBoxService(
     IAlfrescoHttpClient alfrescoHttpClient,
     IIdentityUser identityUser,
     IComponentService componentService,
     IMapper mapper,
     INodesService nodesService
     )
 {
     _alfrescoHttpClient = alfrescoHttpClient;
     _identityUser       = identityUser;
     _componentService   = componentService;
     _mapper             = mapper;
     _nodesService       = nodesService;
 }
Пример #27
0
 public AuditLogService(
     IIdentityUser identityUser,
     ITransactionHistoryRepository transactionHistoryRepository,
     IAlfrescoModelComparer alfrescoModelComparer,
     IMapper mapper,
     ITranslateService translationService
     )
 {
     _identityUser = identityUser;
     _transactionHistoryRepository = transactionHistoryRepository;
     _alfrescoModelComparer        = alfrescoModelComparer;
     _mapper           = mapper;
     _translateService = translationService;
 }
Пример #28
0
        public FileCancelValidator(IAlfrescoHttpClient alfrescoHttpClient, IIdentityUser identityUser)
        {
            RuleFor(o => o)
            .Cascade(CascadeMode.StopOnFirstFailure)
            .MustAsync(async(context, cancellationToken) =>
            {
                _nodeEntry = await alfrescoHttpClient.GetNodeInfo(context.NodeId, ImmutableList <Parameter> .Empty
                                                                  .Add(new Parameter(AlfrescoNames.Headers.Include, AlfrescoNames.Includes.Path, ParameterType.QueryString)));
                _secondaryChildren = await alfrescoHttpClient.GetNodeSecondaryChildren(context.NodeId, ImmutableList <Parameter> .Empty
                                                                                       .Add(new Parameter(AlfrescoNames.Headers.Where, $"(assocType='{SpisumNames.Associations.Documents}')", ParameterType.QueryString)));
                _groupPaging = await alfrescoHttpClient.GetPersonGroups(identityUser.Id);

                return(_nodeEntry?.Entry?.Id != null && _secondaryChildren != null && _groupPaging != null);
            })
            .WithName(x => nameof(x.NodeId))
            .WithMessage("Something went wrong with alfresco server.")
            .DependentRules(() =>
            {
                RuleFor(x => x)
                .Must(y => _groupPaging?.List?.Entries?.Any(q => q.Entry.Id == identityUser.RequestGroup) ?? false)
                .WithName(x => "Group")
                .WithMessage($"User isn't member of group {identityUser.RequestGroup}.");

                RuleFor(x => x.NodeId)
                .Must(x => _nodeEntry.Entry.NodeType == SpisumNames.NodeTypes.File)
                .WithMessage(x => $"Provided nodeId must be NodeType {SpisumNames.NodeTypes.File}");

                RuleFor(x => x)
                .Must(x => _secondaryChildren?.List?.Entries?.Count == null || !_secondaryChildren.List.Entries.Any())
                .OnAnyFailure(x => throw new BadRequestException(ErrorCodes.V_FILE_CANCEL_CHILDREN));

                RuleFor(x => x)
                .Must(x => _nodeEntry?.Entry?.Path?.Name?.StartsWith(AlfrescoNames.Prefixes.Path + SpisumNames.Paths.Evidence, StringComparison.OrdinalIgnoreCase) == true)
                .OnAnyFailure(x => throw new BadRequestException("Document must be in evidence site."));

                RuleFor(x => x)
                .Must(x => _nodeEntry?.Entry?.Path?.Name?.StartsWith(AlfrescoNames.Prefixes.Path + SpisumNames.Paths.EvidenceFilesOpen(identityUser.RequestGroup), StringComparison.OrdinalIgnoreCase) == true)
                .OnAnyFailure(x => throw new BadRequestException("File can't be cancelled"));

                RuleFor(x => x.NodeId)
                .Must(x => IsNodePathAllowed(x, identityUser.RequestGroup));
            });

            RuleFor(x => x)
            .Must(CheckReasonLength);
        }
Пример #29
0
        private async Task <IIdentityUser> GetUserInternalAsync()
        {
            if (user == null)
            {
                if (UserId != null)
                {
                    user = await userStore.FindByIdAsync(UserId.Value);

                    if (user == null)
                    {
                        throw new InvalidOperationException($"GetUserAsync failed because the authenticated user with ID '{UserId.Value}' could not be found");
                    }
                }
            }

            return(user);
        }
Пример #30
0
 public ConceptService(IAlfrescoHttpClient alfrescoHttpClient,
                       INodesService nodesService,
                       ITransactionHistoryService transactionHistoryService,
                       IIdentityUser identityUser,
                       IComponentService componentService,
                       IDocumentService documentService,
                       IAuditLogService auditLogService
                       )
 {
     _alfrescoHttpClient        = alfrescoHttpClient;
     _nodesService              = nodesService;
     _transactionHistoryService = transactionHistoryService;
     _identityUser              = identityUser;
     _componentService          = componentService;
     _documentService           = documentService;
     _auditLogService           = auditLogService;
 }