anchor.diff:               string:substr(UserPasswordStr, I + 1)}
       end.
   
  -parse_user(UserPasswordStr) ->
  -    case string:tokens(UserPasswordStr, ":") of
  -        [] -> undefined;
  -        [User] -> User;
  -        [User, _Password] -> User
  -    end.
  -
   -spec has_permission(rbac_permission(), mochiweb_request()) -> boolean().
   has_permission(Permission, Req) ->
       menelaus_roles:is_allowed(Permission, get_identity(Req)).
  
positive.code: -spec get_token(mochiweb_request()) -> auth_token() | undefined.
  get_token(Req) ->
      Req:get_header_value("menelaus-auth-token").
  
  -spec extract_auth_user(mochiweb_request()) -> string() | undefined.
  extract_auth_user(Req) ->
      case Req:get_header_value("authorization") of
          "Basic " ++ Value ->
              parse_user(base64:decode_to_string(Value));
          _ -> undefined
      end.
  
  -spec extract_auth(mochiweb_request()) -> {User :: string(), Passwd :: string()}
                                                | {token, string()}
  
negative.code: -export([has_permission/2,
           get_accessible_buckets/2,
           extract_auth/1,
           extract_identity_from_cert/1,
           extract_ui_auth_token/1,
           uilogin/3,
  