func (s *Storage) GetClient(id string) (osin.Client, error) { row := s.db.QueryRow("SELECT id, secret, redirect_uri, extra FROM client WHERE id=$1 LIMIT 1", id) var c osin.DefaultClient var extra string if err := row.Scan(&c.Id, &c.Secret, &c.RedirectUri, &extra); err != nil { return nil, err } c.UserData = extra return &c, nil }
// GetClient loads the client by id func (s *Storage) GetClient(id string) (osin.Client, error) { row := s.db.QueryRow("SELECT id, secret, redirect_uri, extra FROM client WHERE id=$1", id) var c osin.DefaultClient var extra string if err := row.Scan(&c.Id, &c.Secret, &c.RedirectUri, &extra); err == sql.ErrNoRows { return nil, pkg.ErrNotFound } else if err != nil { return nil, errors.New(err) } c.UserData = extra return &c, nil }
// GetClient loads the client by id func (s *Storage) GetClient(id string) (osin.Client, error) { args := map[string]interface{}{ "id": id, } nstmt, err := s.db.PrepareNamed("SELECT idclient, secret, redirect_uri, extra FROM client WHERE idclient=:id") if err != nil { return nil, err } row := nstmt.QueryRowx(args) var c osin.DefaultClient var extra string if err := row.Scan(&c.Id, &c.Secret, &c.RedirectUri, &extra); err == sql.ErrNoRows { return nil, errors.New("not found") } else if err != nil { return nil, errors.New(err) } c.UserData = extra return &c, nil }
func createOauthClient(w http.ResponseWriter, r *http.Request) { var responseMessage []byte code := 200 if r.Method == "POST" { decoder := json.NewDecoder(r.Body) var newOauthClient NewClientRequest err := decoder.Decode(&newOauthClient) if err != nil { responseMessage = []byte(E_SYSTEM_ERROR) code = 500 log.Error("Couldn't decode body") log.Error(err) } u5, err := uuid.NewV4() cleanSting := strings.Replace(u5.String(), "-", "", -1) u5Secret, err := uuid.NewV4() secret := base64.StdEncoding.EncodeToString([]byte(u5Secret.String())) newClient := osin.DefaultClient{ Id: cleanSting, RedirectUri: newOauthClient.ClientRedirectURI, Secret: secret, } storageID := createOauthClientStorageID(newOauthClient.APIID, newClient.GetId()) storeErr := genericOsinStorage.SetClient(storageID, &newClient, true) if storeErr != nil { log.Error("Failed to save new client data: ", storeErr) responseMessage = createError("Failure in storing client data.") } reportableClientData := OAuthClient{ ClientID: newClient.GetId(), ClientSecret: newClient.GetSecret(), ClientRedirectURI: newClient.GetRedirectUri(), } responseMessage, err = json.Marshal(&reportableClientData) if err != nil { log.Error("Marshalling failed") log.Error(err) responseMessage = []byte(E_SYSTEM_ERROR) code = 500 } else { log.WithFields(logrus.Fields{ "key": newClient.GetId(), }).Info("New OAuth Client registered successfully.") } } else { code = 405 responseMessage = createError("Method not supported") } w.WriteHeader(code) fmt.Fprintf(w, string(responseMessage)) }