/// <summary> /// Liefert alle <see cref="IGrantedAuthority" /> der angebenen Rolle für den Nutzer im AuthotizationManager. /// </summary> /// <param name="roles"></param> /// <returns></returns> public IList <IGrantedAuthority> GetAuthorities(IList <string> roles) { Require.NotNull(roles, nameof(roles)); List <IGrantedAuthority> grantedAuthorities = new List <IGrantedAuthority>(); foreach (string role in roles) { if (_rolesToPermissions.ContainsKey(role)) { // Rolle als Authority hinzufügen grantedAuthorities.Add(new SimpleGrantedAuthority(role)); foreach (string permission in _rolesToPermissions[role]) { if (AttributeExpressionParser.IsExpression(permission)) { SimpleGrantedAuthority authorityForExpression = GetAuthorityForExpression(permission); if (!grantedAuthorities.Contains(authorityForExpression)) { grantedAuthorities.Add(authorityForExpression); } } else { SimpleGrantedAuthority authority = new SimpleGrantedAuthority(permission); if (!grantedAuthorities.Contains(authority)) { grantedAuthorities.Add(authority); } } } } } return(grantedAuthorities); }
private SimpleGrantedAuthority GetAuthorityForExpression(string permission) { // Wenn es keinen Nutzer gibt, kann nichts evaluiert werden, also gibt es auch keine Berechtigung. if (_user == null) { return(null); } string expression = AttributeExpressionParser.Parse(permission); object evaluatedExpression = ExpressionEvaluator.GetValue(_user, expression); if (evaluatedExpression == null) { // Es konnte kein Wert bestimmt werden, also gibt es auch keine Berechtigung. return(null); } string first = permission.Split('{').First(); string last = permission.Split('}').Last(); SimpleGrantedAuthority simpleGrantedAuthority = new SimpleGrantedAuthority(first + evaluatedExpression + last); return(simpleGrantedAuthority); }