Exemplo n.º 1
0
 public UserApiController(UserQueries queries, UserService service, IUserPermissionContext permissionContext, IEntryThumbPersister thumbPersister)
 {
     this.queries = queries;
     this.service = service;
     this.permissionContext = permissionContext;
     this.thumbPersister = thumbPersister;
 }
 public CommentApiController(IRepository db, IUserPermissionContext userContext, IUserIconFactory userIconFactory, IEntryLinkFactory entryLinkFactory)
 {
     this.db               = db;
     this.userContext      = userContext;
     this.userIconFactory  = userIconFactory;
     this.entryLinkFactory = entryLinkFactory;
 }
        public static void VerifyResourceAccess(this IUserPermissionContext permissionContext, IEnumerable<int> ownerIds)
        {
            permissionContext.VerifyLogin();

            if (!ownerIds.Contains(permissionContext.LoggedUserId))
                throw new NotAllowedException("You do not have access to this resource.");
        }
Exemplo n.º 4
0
 public DiscussionQueries(IDiscussionFolderRepository repository, IUserPermissionContext permissionContext, IUserIconFactory userIconFactory,
                          IEntryLinkFactory entryLinkFactory)
     : base(repository, permissionContext)
 {
     this.userIconFactory  = userIconFactory;
     this.entryLinkFactory = entryLinkFactory;
 }
Exemplo n.º 5
0
 public ServiceModel(ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory, BrandableStringsManager brandableStringsManager)
 {
     this.sessionFactory          = sessionFactory;
     this.permissionContext       = permissionContext;
     this.entryLinkFactory        = entryLinkFactory;
     this.brandableStringsManager = brandableStringsManager;
 }
Exemplo n.º 6
0
 public EntryQueries(IAlbumRepository repository, IUserPermissionContext permissionContext, IEntryThumbPersister entryThumbPersister,
                     IEntryImagePersisterOld entryImagePersisterOld)
     : base(repository, permissionContext)
 {
     this.entryThumbPersister    = entryThumbPersister;
     this.entryImagePersisterOld = entryImagePersisterOld;
 }
Exemplo n.º 7
0
 public MikuDbAlbumService(ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory,
                           AlbumService albumService, SongService songService)
     : base(sessionFactory, permissionContext, entryLinkFactory)
 {
     _albumService = albumService;
     _songService  = songService;
 }
Exemplo n.º 8
0
 public SongListQueries(ISongListRepository repository, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory, IEntryImagePersisterOld imagePersister)
 {
     this.repository        = repository;
     this.permissionContext = permissionContext;
     this.entryLinkFactory  = entryLinkFactory;
     this.imagePersister    = imagePersister;
 }
Exemplo n.º 9
0
 public QueryService(ServiceModel services, ArtistQueries artistQueries, TagQueries tagQueries, IUserPermissionContext userPermissionContext)
 {
     Services                   = services;
     this.artistQueries         = artistQueries;
     this.tagQueries            = tagQueries;
     this.userPermissionContext = userPermissionContext;
 }
Exemplo n.º 10
0
 public AdminService(ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory,
                     IEnumTranslations enumTranslations, IUserIconFactory userIconFactory)
     : base(sessionFactory, permissionContext, entryLinkFactory)
 {
     this.enumTranslations = enumTranslations;
     this.userIconFactory  = userIconFactory;
 }
Exemplo n.º 11
0
        public static bool CanDelete <TEntry>(IUserPermissionContext permissionContext, TEntry entry)
            where TEntry : IEntryWithVersions, IEntryWithStatus
        {
            if (!permissionContext.IsLoggedIn)
            {
                return(false);
            }

            // Deleting requires edit permission
            if (!CanEdit(permissionContext, entry))
            {
                return(false);
            }

            if (permissionContext.HasPermission(PermissionToken.DeleteEntries))
            {
                return(true);
            }

            // Verified artists can delete their entries
            if (IsVerifiedFor(permissionContext, entry))
            {
                return(true);
            }

            return(entry.ArchivedVersionsManager.VersionsBase.All(v => v.Author != null && v.Author.Id == permissionContext.LoggedUserId));
        }
Exemplo n.º 12
0
        public EventEdit(ReleaseEventSeriesContract seriesContract, IUserPermissionContext userContext)
            : this()
        {
            Series = seriesContract;

            AllowedEntryStatuses = EntryPermissionManager.AllowedEntryStatuses(userContext).ToArray();
        }
Exemplo n.º 13
0
 public ActivityFeedService(ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory,
                            IUserIconFactory userIconFactory, EntryForApiContractFactory entryForApiContractFactory)
     : base(sessionFactory, permissionContext, entryLinkFactory)
 {
     this.userIconFactory            = userIconFactory;
     this.entryForApiContractFactory = entryForApiContractFactory;
 }
Exemplo n.º 14
0
        public void CopyNonEditableProperties(TagForEditContract contract, IUserPermissionContext permissionContext)
        {
            AllowedEntryStatuses = EntryPermissionManager.AllowedEntryStatuses(permissionContext).ToArray();
            CanDelete            = contract.CanDelete;
            CurrentName          = contract.Name;
            Deleted = contract.Deleted;
            Id      = contract.Id;
            IsEmpty = contract.IsEmpty;
            Thumb   = contract.Thumb;
            UrlSlug = contract.UrlSlug;

            string GetTagTargetTypeName(TagTargetTypes t)
            {
                switch (t)
                {
                case TagTargetTypes.Nothing:
                    return("Nothing");

                case TagTargetTypes.All:
                    return("Anything");
                }
                return(string.Join(", ", EnumVal <EntryType> .Values.Where(e => e != EntryType.Undefined).Where(e => t.HasFlag((TagTargetTypes)e)).Select(e => Translate.EntryTypeNames[e])));
            }

            AllTagTargetTypes = new[] { TagTargetTypes.Album, TagTargetTypes.Artist, TagTargetTypes.Song, TagTargetTypes.Event }
            .ToDictionary(t => t, GetTagTargetTypeName);
        }
Exemplo n.º 15
0
        public EventEdit(ReleaseEventForEditContract contract, IUserPermissionContext userContext)
            : this()
        {
            ParamIs.NotNull(() => contract);

            Artists             = contract.Artists;
            Category            = contract.Category;
            CustomName          = contract.CustomName = contract.CustomName;
            Date                = contract.Date;
            DefaultNameLanguage = contract.DefaultNameLanguage;
            Description         = contract.Description;
            EndDate             = contract.EndDate;
            Id           = contract.Id;
            Name         = OldName = contract.Name;
            Names        = contract.Names;
            PVs          = contract.PVs;
            Series       = contract.Series;
            SeriesNumber = contract.SeriesNumber;
            SeriesSuffix = contract.SeriesSuffix;
            SongList     = contract.SongList;
            Status       = contract.Status;
            Venue        = contract.Venue;
            VenueName    = contract.VenueName;
            WebLinks     = contract.WebLinks;

            CopyNonEditableProperties(contract, userContext);
        }
Exemplo n.º 16
0
 public SongService(ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory, IEntryUrlParser entryUrlParser,
                    VdbConfigManager config)
     : base(sessionFactory, permissionContext, entryLinkFactory)
 {
     _entryUrlParser = entryUrlParser;
     _config         = config;
 }
Exemplo n.º 17
0
 public AlbumService(ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory,
                     IUserIconFactory userIconFactory, IEntryThumbPersister entryThumbPersister)
     : base(sessionFactory, permissionContext, entryLinkFactory)
 {
     this.userIconFactory     = userIconFactory;
     this.entryThumbPersister = entryThumbPersister;
 }
Exemplo n.º 18
0
 public UserApiController(UserQueries queries, UserService service, IUserPermissionContext permissionContext, IEntryThumbPersister thumbPersister)
 {
     this.queries           = queries;
     this.service           = service;
     this.permissionContext = permissionContext;
     this.thumbPersister    = thumbPersister;
 }
Exemplo n.º 19
0
 public QueryService(ServiceModel services, ArtistQueries artistQueries, TagQueries tagQueries, IUserPermissionContext userPermissionContext)
 {
     Services = services;
     this.artistQueries = artistQueries;
     this.tagQueries = tagQueries;
     this.userPermissionContext = userPermissionContext;
 }
Exemplo n.º 20
0
        /// <summary>
        /// Gets a list of entry statuses that the user can edit or set.
        /// This means, the user is allowed to edit entries with any of these statuses,
        /// and the user is able to change the entry status to any of these.
        /// </summary>
        /// <remarks>
        /// Most of the time the allowed entry statuses are global, but associating a user account with an artist entry
        /// gives special entry-specific permissions for the user editing that entry.
        /// </remarks>
        /// <param name="permissionContext">User permission context identifying the user's global permissions.</param>
        /// <param name="entry">Entry to be checked. Can be null. If null, only global permissions will be checked.</param>
        /// <returns>A list of permissions that can be set by the user.</returns>
        public static StatusSet AllowedEntryStatuses(IUserPermissionContext permissionContext, IEntryBase entry = null)
        {
            // Check for basic edit permissions, without these the user is limited or disabled
            if (!permissionContext.HasPermission(PermissionToken.ManageDatabase))
            {
                return(StatusSet.Empty);
            }

            // Moderators with lock permissions can edit everything
            if (permissionContext.HasPermission(PermissionToken.LockEntries))
            {
                return(allPermissions);
            }

            // Trusted users can edit approved entries
            if (permissionContext.HasPermission(PermissionToken.ApproveEntries))
            {
                return(trustedStatusPermissions);
            }

            // Verified artists get trusted permissions for their own entry
            if (IsVerifiedFor(permissionContext, entry))
            {
                return(trustedStatusPermissions);
            }

            // Normal user permissions
            if (permissionContext.HasPermission(PermissionToken.ManageDatabase))
            {
                return(normalStatusPermissions);
            }

            return(StatusSet.Empty);
        }
Exemplo n.º 21
0
 public TagQueries(ITagRepository repository, IUserPermissionContext permissionContext,
                   IEntryLinkFactory entryLinkFactory, IEntryImagePersisterOld imagePersister)
     : base(repository, permissionContext)
 {
     this.entryLinkFactory = entryLinkFactory;
     this.imagePersister   = imagePersister;
 }
		public SongListWithArchivedVersionsContract(SongList songList, IUserPermissionContext permissionContext)
			: base(songList, permissionContext) {
			
			ArchivedVersions = songList.ArchivedVersionsManager.Versions.Select(
				a => new ArchivedSongListVersionContract(a)).ToArray();

		}
Exemplo n.º 23
0
        protected QueriesBase(TRepo repository, IUserPermissionContext permissionContext)
        {
            ParamIs.NotNull(() => repository);
            ParamIs.NotNull(() => permissionContext);

            this.repository        = repository;
            this.permissionContext = permissionContext;
        }
Exemplo n.º 24
0
 public AlbumQueries(IAlbumRepository repository, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory,
                     IEntryThumbPersister imagePersister, IUserMessageMailer mailer)
     : base(repository, permissionContext)
 {
     this.entryLinkFactory = entryLinkFactory;
     this.imagePersister   = imagePersister;
     this.mailer           = mailer;
 }
Exemplo n.º 25
0
		public VideoUrlParseResult ParseByUrl(string url, bool getTitle, IUserPermissionContext permissionContext) {

			if (!MatchedPVs.ContainsKey(url))
				return ResultFunc(url, getTitle);

			return MatchedPVs[url];

		}
Exemplo n.º 26
0
 public ActivityEntryQueries(IRepository repository, IUserIconFactory userIconFactory,
                             IUserPermissionContext permissionContext, EntryForApiContractFactory entryForApiContractFactory)
 {
     _repository                 = repository;
     _userIconFactory            = userIconFactory;
     _permissionContext          = permissionContext;
     _entryForApiContractFactory = entryForApiContractFactory;
 }
Exemplo n.º 27
0
 public ArtistQueries(IArtistRepository repository, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory, IEntryThumbPersister imagePersister,
                      ObjectCache cache)
     : base(repository, permissionContext)
 {
     this.entryLinkFactory = entryLinkFactory;
     this.imagePersister   = imagePersister;
     this.cache            = cache;
 }
Exemplo n.º 28
0
 public OtherService(ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory,
                     IUserIconFactory userIconFactory, EntryForApiContractFactory entryForApiContractFactory, ObjectCache cache)
     : base(sessionFactory, permissionContext, entryLinkFactory)
 {
     this.userIconFactory            = userIconFactory;
     this.entryForApiContractFactory = entryForApiContractFactory;
     this.cache = cache;
 }
Exemplo n.º 29
0
 public ActivityEntryApiController(IRepository repository, IUserIconFactory userIconFactory,
                                   IUserPermissionContext permissionContext, EntryForApiContractFactory entryForApiContractFactory)
 {
     this.repository                 = repository;
     this.userIconFactory            = userIconFactory;
     this.permissionContext          = permissionContext;
     this.entryForApiContractFactory = entryForApiContractFactory;
 }
 public SongListForEditContract(SongList songList, IUserPermissionContext permissionContext)
     : base(songList, permissionContext)
 {
     SongLinks = songList.SongLinks
                 .OrderBy(s => s.Order)
                 .Select(s => new SongInListEditContract(s, permissionContext.LanguagePreference))
                 .ToArray();
 }
Exemplo n.º 31
0
 public SongListQueries(ISongListRepository repository, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory,
                        IEntryImagePersisterOld imagePersister, IUserIconFactory userIconFactory)
     : base(repository, permissionContext)
 {
     this.entryLinkFactory = entryLinkFactory;
     this.imagePersister   = imagePersister;
     this.userIconFactory  = userIconFactory;
 }
Exemplo n.º 32
0
        public SongListWithArchivedVersionsContract(SongList songList, IUserPermissionContext permissionContext)
            : base(songList)
        {
            ArchivedVersions = songList.ArchivedVersionsManager.Versions.Select(
                a => new ArchivedSongListVersionContract(a)).ToArray();

            Version = songList.Version;
        }
Exemplo n.º 33
0
 public SongListForEditContract(SongList songList, IUserPermissionContext permissionContext, bool loadSongs = true)
     : base(songList, permissionContext)
 {
     if (loadSongs)
         SongLinks = songList.SongLinks
             .OrderBy(s => s.Order)
             .Select(s => new SongInListEditContract(s, permissionContext.LanguagePreference))
             .ToArray();
 }
Exemplo n.º 34
0
        public static void VerifyAccess <T>(IUserPermissionContext permissionContext, T entry, Func <IUserPermissionContext, T, bool> accessCheck) where T : class, IEntryBase
        {
            ParamIs.NotNull(() => entry);

            if (!accessCheck(permissionContext, entry))
            {
                throw new NotAllowedException();
            }
        }
Exemplo n.º 35
0
        protected ServiceBase(
            ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory)
        {
            ParamIs.NotNull(() => sessionFactory);

            this.sessionFactory    = sessionFactory;
            this.permissionContext = permissionContext;
            this.entryLinkFactory  = entryLinkFactory;
        }
Exemplo n.º 36
0
        public SongListContract(SongList list, IUserPermissionContext permissionContext)
            : base(list)
        {
            ParamIs.NotNull(() => list);

            Author = new UserContract(list.Author);
            CanEdit = EntryPermissionManager.CanEdit(permissionContext, list);
            Description = list.Description;
            FeaturedCategory = list.FeaturedCategory;
        }
Exemplo n.º 37
0
        public SongEditViewModel(SongContract song, IUserPermissionContext permissionContext,
            SongForEditContract editedSong = null)
            : this()
        {
            ParamIs.NotNull(() => song);

            Song = song;
            AllowedEntryStatuses = EntryPermissionManager.AllowedEntryStatuses(permissionContext);
            EditedSong = editedSong;
        }
Exemplo n.º 38
0
        public ArtistEditViewModel(ArtistContract artist, IUserPermissionContext permissionContext,
            ArtistForEditContract editedArtist = null)
            : this()
        {
            ParamIs.NotNull(() => artist);

            Artist = artist;
            AllowedEntryStatuses = EntryPermissionManager.AllowedEntryStatuses(permissionContext);
            EditedArtist = editedArtist;
        }
Exemplo n.º 39
0
        public AlbumEditViewModel(AlbumContract album, IUserPermissionContext permissionContext,
            AlbumForEditContract editedAlbum = null)
            : this()
        {
            ParamIs.NotNull(() => album);

            Album = album;
            EditedAlbum = editedAlbum;

            AllowedEntryStatuses = EntryPermissionManager.AllowedEntryStatuses(permissionContext);
        }
Exemplo n.º 40
0
 public UserDetailsContract(User user, IUserPermissionContext permissionContext)
     : base(user, permissionContext.LanguagePreference)
 {
     AboutMe = user.Options.AboutMe;
     LastLogin = user.LastLogin;
     LastLoginAddress = user.Options.LastLoginAddress;
     Location = user.Options.Location;
     SongLists = user.SongLists
         .Where(l => l.FeaturedCategory == SongListFeaturedCategory.Nothing)
         .Select(l => new SongListContract(l, permissionContext)).ToArray();
     WebLinks = user.WebLinks.OrderBy(w => w.DescriptionOrUrl).Select(w => new WebLinkContract(w)).ToArray();
 }
Exemplo n.º 41
0
		public SongListContract(SongList list, IUserPermissionContext permissionContext)
			: base(list) {

			ParamIs.NotNull(() => list);

			Author = new UserWithEmailContract(list.Author);
			CanEdit = EntryPermissionManager.CanEdit(permissionContext, list);
			Description = list.Description;
			FeaturedCategory = list.FeaturedCategory;
			Thumb = (list.Thumb != null ? new EntryThumbContract(list.Thumb) : null);

		}
Exemplo n.º 42
0
		private static AgentLoginData CreateAgentLoginData(IRepositoryContext<AuditLogEntry> ctx, IUserPermissionContext permissionContext, User user = null) {

			if (user != null)
				return new AgentLoginData(user);

			if (permissionContext.LoggedUser != null) {

				user = ctx.OfType<User>().Load(permissionContext.LoggedUser.Id);
				return new AgentLoginData(user);

			} else {

				return new AgentLoginData(permissionContext.Name);

			}

		}
Exemplo n.º 43
0
 public ServiceModel(ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory)
 {
     this.sessionFactory = sessionFactory;
     this.permissionContext = permissionContext;
     this.entryLinkFactory = entryLinkFactory;
 }
Exemplo n.º 44
0
		public MikuDbAlbumService(ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory, ServiceModel services) 
			: base(sessionFactory, permissionContext, entryLinkFactory) {
			
			this.Services = services;

		}
Exemplo n.º 45
0
		public VideoUrlParseResult ParseByUrl(string url, bool getTitle, IUserPermissionContext permissionContext) {

			return VideoServiceHelper.ParseByUrl(url, getTitle, permissionContext);

		}
		public SongListsByCategoryContract(SongListFeaturedCategory category, IEnumerable<SongList> lists, IUserPermissionContext permissionContext) {

			Category = category;
			Lists = lists.Select(l => new SongListContract(l, permissionContext)).ToArray();

		}
Exemplo n.º 47
0
		public override bool IsAuthorized(IUserPermissionContext permissionContext) {
			return permissionContext.HasPermission(PermissionToken.AddRawFileMedia);
		}
Exemplo n.º 48
0
		/// <summary>
		/// Tests whether the user has the required permissions to add PVs for this service.
		/// </summary>
		/// <param name="permissionContext">Permission context. Can be null (when no user is logged in).</param>
		/// <returns>True if the user authorized to add PVs for this service, otherwise false.</returns>
		public virtual bool IsAuthorized(IUserPermissionContext permissionContext) {
			return true;
		}
Exemplo n.º 49
0
 public RankingService(ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory)
     : base(sessionFactory, permissionContext, entryLinkFactory)
 {
 }
Exemplo n.º 50
0
 public PVApiController(IPVParser pvParser, IUserPermissionContext permissionContext)
 {
     this.pvParser = pvParser;
     this.permissionContext = permissionContext;
 }
Exemplo n.º 51
0
		public ServiceModel(ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory, BrandableStringsManager brandableStringsManager) {
			this.sessionFactory = sessionFactory;
			this.permissionContext = permissionContext;
			this.entryLinkFactory = entryLinkFactory;
			this.brandableStringsManager = brandableStringsManager;
		}
Exemplo n.º 52
0
		public NHibernateAuditLogger(IRepositoryContext<AuditLogEntry> ctx, IUserPermissionContext permissionContext) {
			Ctx = ctx;
			PermissionContext = permissionContext;
		}
Exemplo n.º 53
0
 public ActivityFeedService(ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory)
     : base(sessionFactory, permissionContext, entryLinkFactory)
 {
 }
Exemplo n.º 54
0
 public SongListDetailsContract(SongList list, PartialFindResult<SongInListContract> songLinks, IUserPermissionContext permissionContext)
     : base(list, permissionContext)
 {
     SongLinks = songLinks;
     //SongLinks = list.SongLinks.Select(s => new SongInListContract(s, permissionContext.LanguagePreference)).ToArray();
 }
Exemplo n.º 55
0
 public MikuDbAlbumService(ISessionFactory sessionFactory, IUserPermissionContext permissionContext, IEntryLinkFactory entryLinkFactory)
     : base(sessionFactory, permissionContext, entryLinkFactory)
 {
 }