コード例 #1
0
        /// <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);
        }
コード例 #2
0
        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);
        }