12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152 |
- // Copyright 2012 Google Inc. All rights reserved.
- // Use of this source code is governed by the Apache 2.0
- // license that can be found in the LICENSE file.
- package user
- import (
- "golang.org/x/net/context"
- "google.golang.org/appengine/internal"
- pb "google.golang.org/appengine/internal/user"
- )
- // CurrentOAuth returns the user associated with the OAuth consumer making this
- // request. If the OAuth consumer did not make a valid OAuth request, or the
- // scopes is non-empty and the current user does not have at least one of the
- // scopes, this method will return an error.
- func CurrentOAuth(c context.Context, scopes ...string) (*User, error) {
- req := &pb.GetOAuthUserRequest{}
- if len(scopes) != 1 || scopes[0] != "" {
- // The signature for this function used to be CurrentOAuth(Context, string).
- // Ignore the singular "" scope to preserve existing behavior.
- req.Scopes = scopes
- }
- res := &pb.GetOAuthUserResponse{}
- err := internal.Call(c, "user", "GetOAuthUser", req, res)
- if err != nil {
- return nil, err
- }
- return &User{
- Email: *res.Email,
- AuthDomain: *res.AuthDomain,
- Admin: res.GetIsAdmin(),
- ID: *res.UserId,
- ClientID: res.GetClientId(),
- }, nil
- }
- // OAuthConsumerKey returns the OAuth consumer key provided with the current
- // request. This method will return an error if the OAuth request was invalid.
- func OAuthConsumerKey(c context.Context) (string, error) {
- req := &pb.CheckOAuthSignatureRequest{}
- res := &pb.CheckOAuthSignatureResponse{}
- err := internal.Call(c, "user", "CheckOAuthSignature", req, res)
- if err != nil {
- return "", err
- }
- return *res.OauthConsumerKey, err
- }
|