Guest User

Untitled

a guest
May 23rd, 2018
91
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.42 KB | None | 0 0
  1. public class SecurityService : ISecurityService
  2. {
  3. public ISecurityDoesSyntax<T> For<T>(T entity)
  4. where T : IEntity
  5. {
  6. return new SecurityQueryBuilder<T>(this, entity);
  7. }
  8.  
  9. public bool HasPermission<TEntity, TPermission>(User user, TEntity entity, TPermission permission)
  10. where TEntity : IEntity
  11. where TPermission : NodePermission<TEntity>
  12. {
  13. //...
  14. }
  15. }
  16.  
  17. public class SecurityQueryBuilder<T> : ISecurityDoesSyntax<T>, ISecurityHaveSyntax<T>
  18. {
  19. private ISecurityService _securityService;
  20. private T _entity;
  21. private User _user;
  22.  
  23. public SecurityQueryBuilder(ISecurityService securityService, T entity)
  24. {
  25. _securityService = securityService;
  26. _entity = entity;
  27. }
  28.  
  29. ISecurityHaveSyntax<T> ISecurityDoesSyntax<T>.Does(User user)
  30. {
  31. _user = user;
  32. return this;
  33. }
  34.  
  35. bool ISecurityHaveSyntax<T>.Have(NodePermission<T> permission)
  36. {
  37. return _securityService.HasPermission(_user, _entity, permission);
  38. }
  39. }
  40.  
  41. public interface ISecurityDoesSyntax<T>
  42. where T : IEntity
  43. {
  44. public ISecurityHaveSyntax<T> Does(User user);
  45. }
  46.  
  47. public interface ISecurityHaveSyntax<T>
  48. where T : IEntity
  49. {
  50. public bool Have(NodePermission<T> permission);
  51. public bool HaveAny(IEnumerable<NodePermission<T>> permissions);
  52. public bool HaveAny(params NodePermission<T>[] permissions);
  53. public bool HaveAll(IEnumerable<NodePermission<T>> permissions);
  54. public bool HaveAll(params NodePermission<T>[] permissions);
  55. }
Add Comment
Please, Sign In to add comment