Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- public class SecurityService : ISecurityService
- {
- public ISecurityDoesSyntax<T> For<T>(T entity)
- where T : IEntity
- {
- return new SecurityQueryBuilder<T>(this, entity);
- }
- public bool HasPermission<TEntity, TPermission>(User user, TEntity entity, TPermission permission)
- where TEntity : IEntity
- where TPermission : NodePermission<TEntity>
- {
- //...
- }
- }
- public class SecurityQueryBuilder<T> : ISecurityDoesSyntax<T>, ISecurityHaveSyntax<T>
- {
- private ISecurityService _securityService;
- private T _entity;
- private User _user;
- public SecurityQueryBuilder(ISecurityService securityService, T entity)
- {
- _securityService = securityService;
- _entity = entity;
- }
- ISecurityHaveSyntax<T> ISecurityDoesSyntax<T>.Does(User user)
- {
- _user = user;
- return this;
- }
- bool ISecurityHaveSyntax<T>.Have(NodePermission<T> permission)
- {
- return _securityService.HasPermission(_user, _entity, permission);
- }
- }
- public interface ISecurityDoesSyntax<T>
- where T : IEntity
- {
- public ISecurityHaveSyntax<T> Does(User user);
- }
- public interface ISecurityHaveSyntax<T>
- where T : IEntity
- {
- public bool Have(NodePermission<T> permission);
- public bool HaveAny(IEnumerable<NodePermission<T>> permissions);
- public bool HaveAny(params NodePermission<T>[] permissions);
- public bool HaveAll(IEnumerable<NodePermission<T>> permissions);
- public bool HaveAll(params NodePermission<T>[] permissions);
- }
Add Comment
Please, Sign In to add comment