func (s *Storage) CreateClient(c osin.Client) error { userData, err := dataToString(c.GetUserData()) if err != nil { return err } _, err = s.db.Exec("INSERT INTO client (id, secret, redirect_uri, extra) VALUES ($1, $2, $3, $4)", c.GetId(), c.GetSecret(), c.GetRedirectUri(), userData) return err }
func (s *Storage) UpdateClient(c osin.Client) error { userData, err := dataToString(c.GetUserData()) if err != nil { return err } _, err = s.db.Exec("UPDATE client SET (secret, redirect_uri, extra) = ($2, $3, $4) WHERE id=$1", c.GetId(), c.GetSecret(), c.GetRedirectUri(), userData) return err }
// UpdateClient updates the client (identified by it's id) and replaces the values with the values of client. func (s *Storage) UpdateClient(c osin.Client) error { data, err := assertToString(c.GetUserData()) if err != nil { return err } if _, err := s.db.Exec("UPDATE client SET (secret, redirect_uri, extra) = ($2, $3, $4) WHERE id=$1", c.GetId(), c.GetSecret(), c.GetRedirectUri(), data); err != nil { return errors.New(err) } return nil }
// CreateClient stores the client in the database and returns an error, if something went wrong. func (s *Storage) CreateClient(c osin.Client) error { data, err := assertToString(c.GetUserData()) if err != nil { return err } if _, err := s.db.Exec("INSERT INTO client (id, secret, redirect_uri, extra) VALUES ($1, $2, $3, $4)", c.GetId(), c.GetSecret(), c.GetRedirectUri(), data); err != nil { return errors.New(err) } return nil }
// DeleteClient deletes given client func (s *RethinkDBStorage) DeleteClient(c osin.Client) error { result, err := r.Table(clientsTable).Filter(r.Row.Field("Id").Eq(c.GetId())).Run(s.session) if err != nil { return err } defer result.Close() var clientMap map[string]interface{} err = result.One(&clientMap) if err != nil { return err } _, err = r.Table(clientsTable).Get(clientMap["id"]).Delete().RunWrite(s.session) return err }
func (store *SQLStorage) SetClient(client osin.Client) error { stmt, err := store.authDB.Prepare("INSERT INTO clients(id, secret, redirect_uri, user_data) VALUES(?, ?, ?, ?)") // Marshal user data into string userDataStr, err := setUserData(client.GetUserData()) if err != nil { return err } _, err = stmt.Exec(client.GetId(), client.GetSecret(), client.GetRedirectUri(), userDataStr) return err }
// UpdateClient update client with id c.GetId() func (s *OAuth2Storage) UpdateClient(c osin.Client) (*OAuth2Client, error) { var numericID uint64 var err error if numericID, err = strconv.ParseUint(c.GetId(), 10, 64); err != nil { return nil, fmt.Errorf("invalid client_id: %s", c.GetId()) } client := OAuth2Client{ ID: numericID, RedirectURI: c.GetRedirectUri(), Secret: c.GetSecret(), UserID: c.GetUserData().(uint64), } if err := Db().Updates(&client); err != nil { return nil, err } return &client, nil }
func (d *DefaultClient) CopyFrom(client osin.Client) { d.Id = client.GetId() d.Secret = client.GetSecret() d.RedirectUri = client.GetRedirectUri() d.UserData = nil // d.UserData = client.GetUserData() }
// CreateClient adds new client. // This is not a part of interface and as so, it's never used in osin flow. // However can be really usefull for applications to add new clients. func (receiver *Storage) CreateClient(client osin.Client) error { data, err := json.Marshal(client) if err != nil { return err } params := &dynamodb.PutItemInput{ Item: map[string]*dynamodb.AttributeValue{ "id": { S: aws.String(client.GetId()), }, "json": { S: aws.String(string(data)), }, }, TableName: aws.String(receiver.config.ClientTable), } if _, err := receiver.db.PutItem(params); err != nil { return err } return nil }
// CreateClient stores the client in the database and returns an error, if something went wrong. func (s *Storage) CreateClient(c osin.Client) error { data, err := assertToString(c.GetUserData()) if err != nil { return err } args := map[string]interface{}{ "id": c.GetId(), "secret": c.GetSecret(), "redirect": c.GetRedirectUri(), "extra": data, } nstmt, err := s.db.PrepareNamed("INSERT INTO client (id, secret, redirect_uri, extra) VALUES (:id, :secret, :redirect, :extra)") if err != nil { return errors.New(err) } _, err = nstmt.Exec(args) return nil }
// UpdateClient updates the client (identified by it's id) and replaces the values with the values of client. func (s *Storage) UpdateClient(c osin.Client) error { data, err := assertToString(c.GetUserData()) if err != nil { return err } args := map[string]interface{}{ "id": c.GetId(), "secret": c.GetSecret(), "redirect": c.GetRedirectUri(), "extra": data, } nstmt, err := s.db.PrepareNamed("UPDATE client SET (secret, redirect_uri, extra) = (:secret, :redirect, :extra) WHERE idclient=:id") if err != nil { return err } _, err = nstmt.Exec(args) return nil }
// CreateClient creates a new OAuth2 Client func (s *OAuth2Storage) CreateClient(c osin.Client, name string) (*OAuth2Client, error) { client := OAuth2Client{ Name: name, RedirectURI: c.GetRedirectUri(), Secret: c.GetSecret(), UserID: c.GetUserData().(uint64), } if err := Db().Create(&client); err != nil { return nil, err } return &client, nil }
func (s *MySQLStorage) SetClient(id string, client osin.Client) error { c := &osin.DefaultClient{ Id: client.GetId(), Secret: client.GetSecret(), RedirectUri: client.GetRedirectUri(), } err := Transact(db.DB, func(tx *sql.Tx) error { var err error err = service.CreateClient(tx, c) return err }) return err }
func (store *SQLStorage) SetClient(client osin.Client) error { stmt, err := store.authDB.Prepare("INSERT INTO clients(id, secret, redirect_uri) VALUES(?, ?, ?)") _, err = stmt.Exec(client.GetId(), client.GetSecret(), client.GetRedirectUri()) return err }
func getClient(t *testing.T, store storage.Storage, set osin.Client) { client, err := store.GetClient(set.GetId()) require.Nil(t, err) require.EqualValues(t, set, client) }
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.Client{} newClient.Id = cleanSting newClient.RedirectUri = newOauthClient.ClientRedirectURI newClient.Secret = secret storageID := createOauthClientStorageID(newOauthClient.APIID, newClient.Id) 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.Id, ClientSecret: newClient.Secret, ClientRedirectURI: newClient.RedirectUri, } 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.Id, }).Info("New OAuth Client registered successfully.") } } else { code = 405 responseMessage = createError("Method not supported") } w.WriteHeader(code) fmt.Fprintf(w, string(responseMessage)) }
func removeClient(t *testing.T, store storage.Storage, set osin.Client) { require.Nil(t, store.RemoveClient(set.GetId())) }