Beispiel #1
0
        protected async Task <IActionResult> RunProfileAsync(ShareStatusService shareStatus, UserManager <User> userManager, string profileId, Permission?sharePermission, Func <User, Task <IActionResult> > handler)
        {
            Ensure.NotNullOrEmpty(profileId, "profileId");

            User entity = await userManager.FindByIdAsync(profileId);

            if (entity == null)
            {
                return(NotFound());
            }

            string userId = HttpContext.User.FindUserId();

            if (entity.Id != userId)
            {
                if (sharePermission == null)
                {
                    return(Unauthorized());
                }
                else if (sharePermission == Permission.Read && !await shareStatus.IsProfileSharedForReadAsync(profileId, userId))
                {
                    return(Unauthorized());
                }
                else if (sharePermission == Permission.Write)
                {
                    return(Unauthorized());
                }
            }

            return(await handler(entity));
        }
Beispiel #2
0
 public ProfileController(UserManager <User> userManager, ShareStatusService shareStatus)
 {
     Ensure.NotNull(userManager, "userManager");
     Ensure.NotNull(shareStatus, "shareStatus");
     this.userManager = userManager;
     this.shareStatus = shareStatus;
 }
Beispiel #3
0
 public Task <IActionResult> DeleteProfileAsync([FromServices] ShareStatusService shareStatus, [FromServices] UserManager <User> userManager, string profileId, string userName) => RunProfileAsync(shareStatus, userManager, profileId, async profile =>
 {
     return(await DeleteAsync(
                userName,
                userId => db.ProfileShares.Where(s => s.ProfileId == profileId && s.UserId == userId)
                ));
 });
Beispiel #4
0
 public StoryEntriesController(DataContext db, ShareStatusService shareStatus)
 {
     Ensure.NotNull(db, "db");
     Ensure.NotNull(shareStatus, "shareStatus");
     this.db          = db;
     this.shareStatus = shareStatus;
 }
Beispiel #5
0
 public MapController(DataContext dataContext, ShareStatusService shareStatus)
 {
     Ensure.NotNull(dataContext, "dataContext");
     Ensure.NotNull(shareStatus, "shareStatus");
     this.dataContext = dataContext;
     this.shareStatus = shareStatus;
 }
Beispiel #6
0
 public EntryBeingController(DataContext db, ShareStatusService shareStatus)
     : base(db, shareStatus, RunEntryObserver)
 {
     Ensure.NotNull(db, "db");
     Ensure.NotNull(shareStatus, "shareStatus");
     this.db          = db;
     this.shareStatus = shareStatus;
 }
Beispiel #7
0
 public ShareController(DataContext db, IUserNameProvider userNames, ShareStatusService shareStatus)
     : base(db, shareStatus)
 {
     Ensure.NotNull(db, "db");
     Ensure.NotNull(userNames, "userNames");
     this.db        = db;
     this.userNames = userNames;
 }
Beispiel #8
0
 public Task <IActionResult> CreateProfileAsync([FromServices] ShareStatusService shareStatus, [FromServices] UserManager <User> userManager, string profileId, ShareModel model) => RunProfileAsync(shareStatus, userManager, profileId, profile =>
 {
     return(CreateAsync(
                model,
                userId => db.ProfileShares.Where(s => s.ProfileId == profileId && s.UserId == userId),
                () => new ProfileShare(profileId)
                ));
 });
Beispiel #9
0
 protected ControllerBase(DataContext db, ShareStatusService shareStatus, Func <IQueryable <Entry>, IQueryable <Entry> > runEntryObserver = null, Func <IQueryable <Story>, IQueryable <Story> > runStoryObserver = null)
 {
     Ensure.NotNull(db, "db");
     Ensure.NotNull(shareStatus, "shareStatus");
     this.db               = db;
     this.shareStatus      = shareStatus;
     this.runEntryObserver = runEntryObserver;
     this.runStoryObserver = runStoryObserver;
 }
Beispiel #10
0
 public TimelineController(DataContext dataContext, IUserNameProvider userNames, ShareStatusService shareStatus)
     : base(dataContext, shareStatus)
 {
     Ensure.NotNull(dataContext, "dataContext");
     Ensure.NotNull(userNames, "userNames");
     Ensure.NotNull(shareStatus, "shareStatus");
     this.dataContext = dataContext;
     this.userNames   = userNames;
     this.shareStatus = shareStatus;
 }
Beispiel #11
0
 public CalendarController(DataContext dataContext, ShareStatusService shareStatus, IUserPremiumProvider premiumProvider)
     : base(dataContext, shareStatus)
 {
     Ensure.NotNull(dataContext, "dataContext");
     Ensure.NotNull(shareStatus, "shareStatus");
     Ensure.NotNull(premiumProvider, "premiumProvider");
     this.dataContext     = dataContext;
     this.shareStatus     = shareStatus;
     this.premiumProvider = premiumProvider;
 }
Beispiel #12
0
 public BeingController(DataContext db, IUserNameProvider userNames, ShareStatusService shareStatus, ShareDeleter shareDeleter, FreeLimitsChecker freeLimits)
     : base(db, shareStatus)
 {
     Ensure.NotNull(db, "db");
     Ensure.NotNull(userNames, "userNames");
     Ensure.NotNull(shareStatus, "shareStatus");
     Ensure.NotNull(shareDeleter, "shareDeleter");
     Ensure.NotNull(freeLimits, "freeLimits");
     this.db           = db;
     this.userNames    = userNames;
     this.shareStatus  = shareStatus;
     this.shareDeleter = shareDeleter;
     this.freeLimits   = freeLimits;
 }
Beispiel #13
0
 public ImageController(ImageService service, DataContext dataContext, IFileStorage fileProvider, ShareStatusService shareStatus, IUserNameProvider userNames, FreeLimitsChecker freeLimits)
     : base(dataContext, shareStatus)
 {
     Ensure.NotNull(service, "service");
     Ensure.NotNull(dataContext, "dataContext");
     Ensure.NotNull(fileProvider, "fileProvider");
     Ensure.NotNull(shareStatus, "shareStatus");
     Ensure.NotNull(userNames, "userNames");
     Ensure.NotNull(freeLimits, "freeLimits");
     this.service      = service;
     this.dataContext  = dataContext;
     this.fileProvider = fileProvider;
     this.shareStatus  = shareStatus;
     this.userNames    = userNames;
     this.freeLimits   = freeLimits;
 }
Beispiel #14
0
        // DUPLICATED CODE FROM ProfileController.cs

        protected Task <IActionResult> RunProfileAsync(ShareStatusService shareStatus, UserManager <User> userManager, string profileId, Func <User, Task <IActionResult> > handler)
        => RunProfileAsync(shareStatus, userManager, profileId, null, handler);
Beispiel #15
0
 public Task <IActionResult> GetProfileAsync([FromServices] ShareStatusService shareStatus, [FromServices] UserManager <User> userManager, string profileId) => RunProfileAsync(shareStatus, userManager, profileId, profile =>
 {
     return(GetItemsAsync(db.ProfileShares.Where(s => s.ProfileId == profileId)));
 });