@@ -175,8 +175,9 @@ impl Crate {
175
175
} ) ) ) ;
176
176
177
177
try!( conn. execute ( "INSERT INTO crate_owners
178
- (crate_id, owner_id, created_at, updated_at, deleted)
179
- VALUES ($1, $2, $3, $3, FALSE)" ,
178
+ (crate_id, owner_id, created_by, created_at,
179
+ updated_at, deleted, owner_kind)
180
+ VALUES ($1, $2, $2, $3, $3, FALSE, 0)" ,
180
181
& [ & ret. id , & user_id, & now] ) ) ;
181
182
return Ok ( ret) ;
182
183
@@ -334,8 +335,8 @@ impl Crate {
334
335
} ) ) ;
335
336
try!( conn. execute ( "UPDATE crate_owners
336
337
SET deleted = TRUE, updated_at = $1
337
- WHERE crate_id = $2 AND owner_id = $3" ,
338
- & [ & :: now ( ) , & self . id , & owner. id ( ) ] ) ) ;
338
+ WHERE crate_id = $2 AND owner_id = $3 AND owner_kind = $4 " ,
339
+ & [ & :: now ( ) , & self . id , & owner. id ( ) , & owner . kind ( ) ] ) ) ;
339
340
Ok ( ( ) )
340
341
}
341
342
@@ -492,13 +493,15 @@ pub fn index(req: &mut Request) -> CargoResult<Response> {
492
493
( format ! ( "SELECT crates.* FROM crates
493
494
INNER JOIN crate_owners
494
495
ON crate_owners.crate_id = crates.id
495
- WHERE crate_owners.user_id = $1 {} \
496
+ WHERE crate_owners.owner_id = $1
497
+ AND crate_owners.owner_kind = 0 {}
496
498
LIMIT $2 OFFSET $3" ,
497
499
sort_sql) ,
498
500
"SELECT COUNT(crates.*) FROM crates
499
501
INNER JOIN crate_owners
500
502
ON crate_owners.crate_id = crates.id
501
- WHERE crate_owners.user_id = $1" . to_string ( ) )
503
+ WHERE crate_owners.owner_id = $1 \
504
+ AND crate_owners.owner_kind = 0". to_string ( ) )
502
505
} )
503
506
} ) . or_else ( || {
504
507
query. get ( "following" ) . map ( |_| {
@@ -647,7 +650,7 @@ pub fn new(req: &mut Request) -> CargoResult<Response> {
647
650
& new_crate. license_file ) ) ;
648
651
649
652
let owners = try!( krate. owners ( try!( req. tx ( ) ) ) ) ;
650
- if try!( rights ( & owners, & user) ) >= Rights :: Publish {
653
+ if try!( rights ( & owners, & user) ) < Rights :: Publish {
651
654
return Err ( human ( "crate name has already been claimed by \
652
655
another user") )
653
656
}
@@ -1001,12 +1004,12 @@ fn modify_owners(req: &mut Request, add: bool) -> CargoResult<Response> {
1001
1004
}
1002
1005
}
1003
1006
1004
- #[ derive( RustcDecodable ) ] struct Request { owners : Vec < String > }
1007
+ #[ derive( RustcDecodable ) ] struct Request { users : Vec < String > }
1005
1008
let request: Request = try!( json:: decode ( & body) . map_err ( |_| {
1006
1009
human ( "invalid json request" )
1007
1010
} ) ) ;
1008
1011
1009
- for name in & request. owners {
1012
+ for name in & request. users {
1010
1013
if add {
1011
1014
if owners. iter ( ) . any ( |owner| owner. name ( ) == * name) {
1012
1015
return Err ( human ( format ! ( "`{}` is already an owner" , name) ) )
0 commit comments