Free cookie consent management tool by TermsFeed Policy Generator

Ignore:
Timestamp:
06/20/11 17:04:35 (13 years ago)
Author:
cneumuel
Message:

#1233

  • added methods for granting and revoking hive experiment permissions
  • added unit tests for hive experiment permissions
  • added a status webpage to see how some statistics and current status
File:
1 edited

Legend:

Unmodified
Added
Removed
  • branches/HeuristicLab.Hive-3.4/sources/HeuristicLab.Services.Hive.DataAccess/3.4/HiveDao.cs

    r6452 r6457  
    3131    public static HiveDataContext CreateContext(bool longRunning = false) {
    3232      var context = new HiveDataContext(Settings.Default.HeuristicLab_Hive_LinqConnectionString);
    33       if (longRunning) context.CommandTimeout = (int)Settings.Default.LongRunningDatabaseCommandTimeout.TotalSeconds;     
     33      if (longRunning) context.CommandTimeout = (int)Settings.Default.LongRunningDatabaseCommandTimeout.TotalSeconds;
    3434      return context;
    3535    }
     
    319319      }
    320320    }
     321
     322    /// <summary>
     323    /// Sets the permissions for a experiment. makes sure that only one permission per user exists.
     324    /// </summary>
     325    public void SetHiveExperimentPermission(Guid hiveExperimentId, Guid grantedByUserId, Guid grantedUserId, Permission permission) {
     326      using (var db = CreateContext()) {
     327        HiveExperimentPermission hiveExperimentPermission = db.HiveExperimentPermissions.SingleOrDefault(x => x.HiveExperimentId == hiveExperimentId && x.GrantedUserId == grantedUserId);
     328        if (hiveExperimentPermission != null) {
     329          if (permission == Permission.NotAllowed) {
     330            // not allowed, delete
     331            db.HiveExperimentPermissions.DeleteOnSubmit(hiveExperimentPermission);
     332          } else {
     333            // update
     334            hiveExperimentPermission.Permission = permission;
     335            hiveExperimentPermission.GrantedByUserId = grantedByUserId; // update grantedByUserId, always the last "granter" is stored
     336          }
     337        } else {
     338          // insert
     339          if (permission != Permission.NotAllowed) {
     340            hiveExperimentPermission = new HiveExperimentPermission() { HiveExperimentId = hiveExperimentId, GrantedByUserId = grantedByUserId, GrantedUserId = grantedUserId, Permission = permission };
     341            db.HiveExperimentPermissions.InsertOnSubmit(hiveExperimentPermission);
     342          }
     343        }
     344        db.SubmitChanges();
     345      }
     346    }
    321347    #endregion
    322348
     
    596622    public Permission GetPermissionForExperiment(Guid experimentId, Guid userId) {
    597623      using (var db = CreateContext()) {
     624        HiveExperiment hiveExperiment = db.HiveExperiments.SingleOrDefault(x => x.HiveExperimentId == experimentId);
     625        if (hiveExperiment == null) return Permission.NotAllowed;
     626        if (hiveExperiment.OwnerUserId == userId) return Permission.Full;
    598627        HiveExperimentPermission permission = db.HiveExperimentPermissions.SingleOrDefault(p => p.HiveExperimentId == experimentId && p.GrantedUserId == userId);
    599628        return permission != null ? permission.Permission : Permission.NotAllowed;
Note: See TracChangeset for help on using the changeset viewer.