diff --git a/client/pages/filespage/share.js b/client/pages/filespage/share.js index 28f4e87b..888ffe25 100644 --- a/client/pages/filespage/share.js +++ b/client/pages/filespage/share.js @@ -135,6 +135,12 @@ export class ShareComponent extends React.Component { } this.setState({existings: links}); return Share.upsert(link) + .then(() => { + if(this.state.url !== null && this.state.url !== this.state.id){ + this.onDeleteLink(this.state.id) + } + return Promise.resolve() + }) .then(() => this.setState(this.resetState())) .catch((err) => { notify.send(err, "error"); diff --git a/server/ctrl/share_test.go b/server/ctrl/share_test.go index f245a46d..2f7e784b 100644 --- a/server/ctrl/share_test.go +++ b/server/ctrl/share_test.go @@ -32,7 +32,6 @@ func TestShareMultipleUpsert(t *testing.T) { err := model.ShareUpsert(&shareObj); assert.NoError(t, err) - shareObj.CanManageOwn = false err = model.ShareUpsert(&shareObj); assert.NoError(t, err) @@ -40,18 +39,16 @@ func TestShareMultipleUpsert(t *testing.T) { assert.NoError(t, err) } -// func TestShareUpsertIsProperlyInserted(t *testing.T) { -// err := model.ShareUpsert(&shareObj); -// assert.NoError(t, err) +func TestShareUpsertIsProperlyInserted(t *testing.T) { + err := model.ShareUpsert(&shareObj); + assert.NoError(t, err) -// var obj model.Share -// err = model.ShareGet(&obj) -// assert.NoError(t, err) -// assert.NotNil(t, obj.Password) - -// // TODO -// //assert.NotNil(t, obj.Password) -// } + var obj model.Share + obj.Id = "foo" + err = model.ShareGet(&obj) + assert.NoError(t, err) + assert.NotNil(t, obj.Password) +} ////////////////////////////////////////////// //// get @@ -71,29 +68,26 @@ func TestShareGetExisting(t *testing.T) { assert.NoError(t, err) } -// func TestShareGetExistingMakeSureDataIsOk(t *testing.T) { -// err := model.ShareUpsert(&shareObj); -// assert.NoError(t, err, "Upsert issue") +func TestShareGetExistingMakeSureDataIsOk(t *testing.T) { + err := model.ShareUpsert(&shareObj); + assert.NoError(t, err, "Upsert issue") -// var obj model.Share -// obj.Id = shareObj.Id -// obj.Backend = shareObj.Backend -// err = model.ShareGet(&obj); -// assert.NoError(t, err) -// assert.Equal(t, "foo", obj.Id) -// assert.Equal(t, "/var/www/", obj.Path) -// assert.Equal(t, true, obj.CanManageOwn) -// assert.Equal(t, true, obj.CanShare) -// assert.Equal(t, true, obj.CanRead) -// assert.Equal(t, false, obj.CanWrite) -// assert.Equal(t, false, obj.CanUpload) -// assert.Nil(t, obj.Backend) - -// assert.NotNil(t, obj.Expire) -// assert.Equal(t, shareObj.Expire, obj.Expire) -// assert.NotNil(t, obj.Password) -// assert.NotEqual(t, shareObj.Password, obj.Password) -// } + var obj model.Share + obj.Id = "foo" + obj.Backend = shareObj.Backend + err = model.ShareGet(&obj); + assert.NoError(t, err) + assert.Equal(t, "foo", obj.Id) + assert.Equal(t, "/var/www/", obj.Path) + assert.Equal(t, true, obj.CanManageOwn) + assert.Equal(t, true, obj.CanShare) + assert.Equal(t, true, obj.CanRead) + assert.Equal(t, false, obj.CanWrite) + assert.Equal(t, false, obj.CanUpload) + assert.Equal(t, "foo", obj.Backend) + assert.Equal(t, shareObj.Expire, obj.Expire) + assert.Equal(t, "{{PASSWORD}}", *obj.Password) +} ////////////////////////////////////////////// //// LIST diff --git a/server/model/share.go b/server/model/share.go index 10b52434..942af532 100644 --- a/server/model/share.go +++ b/server/model/share.go @@ -81,11 +81,9 @@ func ShareList(p *Share) ([]Share, error) { sharedFiles := []Share{} for rows.Next() { var a Share - a.Id = "test" var params []byte rows.Scan(&a.Id, &a.Path, ¶ms) json.Unmarshal(params, &a) - // TODO password sharedFiles = append(sharedFiles, a) } rows.Close() @@ -121,11 +119,16 @@ func shareGet(p *Share) error { } func ShareUpsert(p *Share) error { - var copy Share - if p.Password != nil && *p.Password == PASSWORD_DUMMY { - copy = *p - ShareGet(©) - p.Password = copy.Password + if p.Password != nil { + if *p.Password == PASSWORD_DUMMY { + var copy Share + copy.Id = p.Id + shareGet(©); + p.Password = copy.Password + } else { + hashedPassword, _ := bcrypt.GenerateFromPassword([]byte(*p.Password), bcrypt.DefaultCost) + p.Password = NewString(string(hashedPassword)) + } } stmt, err := DB.Prepare("INSERT INTO Location(backend, path) VALUES($1, $2)") @@ -158,16 +161,7 @@ func ShareUpsert(p *Share) error { CanWrite bool `json:"can_write"` CanUpload bool `json:"can_upload"` }{ - Password: func(password *string) *string{ - if password == nil { - return nil - } - if *password == PASSWORD_DUMMY { - return copy.Password - } - hashedPassword, _ := bcrypt.GenerateFromPassword([]byte(*password), bcrypt.DefaultCost) - return NewString(string(hashedPassword)) - }(p.Password), + Password: p.Password, Users: p.Users, Expire: p.Expire, Url: p.Url,