string IGridDefinition.ToColumnJson(IFieldAccessService accessService) { var rights = new Cache <IGridColumn, AccessRight>(col => accessService.RightsFor(null, col.Accessor.InnerProperty)); var builder = new StringBuilder(); builder.Append("["); var columns = _columns.Where(col => !rights[col].Equals(AccessRight.None)).OrderByDescending(x => x.IsFrozen).ToList(); for (var i = 0; i < columns.Count - 1; i++) { var column = columns[i]; column.WriteColumn(builder, rights[column]); builder.Append(", "); } var lastColumn = columns.Last(); lastColumn.WriteColumn(builder, rights[lastColumn]); builder.Append("]"); return(builder.ToString()); }
public FormLineExpression <T> Build(Expression <Func <T, object> > expression, T model = null) { var request = new ElementRequest(expression.ToAccessor()) { Model = model ?? _request.Get <T>() }; var accessRight = _fieldAccessService.RightsFor(request); var chrome = _library.Get <IFieldChrome>(_profile.Name); return(new FormLineExpression <T>(chrome, _generator, request).Access(accessRight)); }
public static bool HasRights <T>(this IFieldAccessService fieldAccessService, T model, Expression <Func <T, object> > expression, AccessRight requiredRights) { return(fieldAccessService.RightsFor(model, expression.ToAccessor().InnerProperty) >= requiredRights); }
public static AccessRight RightsFor <T>(this IFieldAccessService fieldAccessService, T model, Expression <Func <T, object> > expression) { return(fieldAccessService.RightsFor(model, expression.ToAccessor().InnerProperty)); }
public Projection <T> ToProjection(IFieldAccessService accessService) { Func <Accessor, bool> filter = a => !accessService.RightsFor(null, a.InnerProperty).Equals(AccessRight.None); return(Projection.Filter(filter)); }
public UpdatePropertyResultViewModel EditProperty(UpdatePropertyModel <TEntity> updatePropertyModel) { var model = _repository.Find <TEntity>(updatePropertyModel.Id); // TODO -- what if it isn't found? // " ? " //updatePropertyModel.Formatter = _displayFormatter; EditPropertyResult editResult; try { var handler = _handlers.FirstOrDefault(x => x.CanEdit(updatePropertyModel)); if (handler == null) { throw new ApplicationException( "No handler for property {0} on type {1}".ToFormat(updatePropertyModel.PropertyName, typeof(Entity).FullName)); } var property = handler.FindProperty(updatePropertyModel); var rights = _fieldAccess.RightsFor(model, property.Property); if (!rights.Write) { var updatePropertyViewModel = new UpdatePropertyResultViewModel { Message = FastPackKeys.NOT_AUTHORIZED.ToString(), ShouldRefresh = false, Success = false }; updatePropertyViewModel.AddError(new AjaxError { field = property.Property.Name, message = FastPackKeys.NOT_AUTHORIZED.ToString() }); return(updatePropertyViewModel); } editResult = handler.EditProperty(updatePropertyModel, model); } catch (FormatException ex) { return(createResultForConversionFailure(updatePropertyModel, ex)); } catch (InvalidPropertyConversionException ex) { return(createResultForConversionFailure(updatePropertyModel, ex)); } if (editResult.WasNotApplied) { var updatePropertyResultViewModel = new UpdatePropertyResultViewModel { Success = false }; updatePropertyResultViewModel.AddErrors(editResult.ToValidationErrors()); return(updatePropertyResultViewModel); } var returnValue = propertySaveResult(model, editResult); if (returnValue.Success) { _logger.Log(model, editResult); } return(returnValue); }