public override bool IsOn(IFemahContext context) { bool isOn; if ( context.HttpContext == null || context.HttpContext.Request == null ) { return false; } // Check if a cookie for this switch exists already. if ( context.HttpContext.Request.Cookies.AllKeys.Contains(this.Name) ) { if (!Boolean.TryParse(context.HttpContext.Request.Cookies[this.Name].Value, out isOn)) { isOn = false; } } else { // No cookie set. Choose randomly if feature should be set or not. double threshold = PercentageOn / 100.0; isOn = _randomGenerator() < threshold; // Save value to cookie. context.HttpContext.Response.Cookies.Add( new HttpCookie(this.Name, isOn.ToString()) ); } return isOn; }
/// <summary> /// Determine if feature is on or off, according to the current user's roles. /// </summary> /// <param name="context"></param> /// <returns>True if feature is on, false otherwise.</returns> public override bool IsOn(IFemahContext context) { if (context.HttpContext == null || context.HttpContext.User == null) { return false; } if ( AcceptedRoles == null || AcceptedRoles.Count == 0 ) { return false; } foreach ( var role in AcceptedRoles ) { if ( context.HttpContext.User.IsInRole(role) ) { return true; } } return false; }
public override bool IsOn( IFemahContext context ) { // The simple feature switch is always on. return true; }