mirror of
https://github.com/BookStackApp/BookStack.git
synced 2024-11-24 03:42:32 +01:00
Fixed password re-writing and improved book slug creation
This commit is contained in:
parent
a4f21e9482
commit
b2223f1618
@ -61,11 +61,7 @@ class BookController extends Controller
|
|||||||
'description' => 'string|max:1000'
|
'description' => 'string|max:1000'
|
||||||
]);
|
]);
|
||||||
$book = $this->bookRepo->newFromInput($request->all());
|
$book = $this->bookRepo->newFromInput($request->all());
|
||||||
$slug = Str::slug($book->name);
|
$book->slug = $this->bookRepo->findSuitableSlug($book->name);
|
||||||
while($this->bookRepo->countBySlug($slug) > 0) {
|
|
||||||
$slug .= '1';
|
|
||||||
}
|
|
||||||
$book->slug = $slug;
|
|
||||||
$book->created_by = Auth::user()->id;
|
$book->created_by = Auth::user()->id;
|
||||||
$book->updated_by = Auth::user()->id;
|
$book->updated_by = Auth::user()->id;
|
||||||
$book->save();
|
$book->save();
|
||||||
@ -111,11 +107,7 @@ class BookController extends Controller
|
|||||||
'description' => 'string|max:1000'
|
'description' => 'string|max:1000'
|
||||||
]);
|
]);
|
||||||
$book->fill($request->all());
|
$book->fill($request->all());
|
||||||
$slug = Str::slug($book->name);
|
$book->slug = $this->bookRepo->findSuitableSlug($book->name, $book->id);
|
||||||
while($this->bookRepo->countBySlug($slug) > 0 && $book->slug != $slug) {
|
|
||||||
$slug += '1';
|
|
||||||
}
|
|
||||||
$book->slug = $slug;
|
|
||||||
$book->updated_by = Auth::user()->id;
|
$book->updated_by = Auth::user()->id;
|
||||||
$book->save();
|
$book->save();
|
||||||
return redirect($book->getUrl());
|
return redirect($book->getUrl());
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
<?php namespace Oxbow\Repos;
|
<?php namespace Oxbow\Repos;
|
||||||
|
|
||||||
|
use Illuminate\Support\Str;
|
||||||
use Oxbow\Book;
|
use Oxbow\Book;
|
||||||
|
|
||||||
class BookRepo
|
class BookRepo
|
||||||
@ -62,4 +63,22 @@ class BookRepo
|
|||||||
return $lastElem ? $lastElem->priority + 1 : 0;
|
return $lastElem ? $lastElem->priority + 1 : 0;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
public function doesSlugExist($slug, $currentId = false)
|
||||||
|
{
|
||||||
|
$query = $this->book->where('slug', '=', $slug);
|
||||||
|
if($currentId) {
|
||||||
|
$query = $query->where('id', '!=', $currentId);
|
||||||
|
}
|
||||||
|
return $query->count() > 0;
|
||||||
|
}
|
||||||
|
|
||||||
|
public function findSuitableSlug($name, $currentId = false)
|
||||||
|
{
|
||||||
|
$slug = Str::slug($name);
|
||||||
|
while($this->doesSlugExist($slug, $currentId)) {
|
||||||
|
$slug .= '-' . substr(md5(rand(1, 500)), 0, 3);
|
||||||
|
}
|
||||||
|
return $slug;
|
||||||
|
}
|
||||||
|
|
||||||
}
|
}
|
@ -24,7 +24,7 @@ class User extends Model implements AuthenticatableContract, CanResetPasswordCon
|
|||||||
*
|
*
|
||||||
* @var array
|
* @var array
|
||||||
*/
|
*/
|
||||||
protected $fillable = ['name', 'email', 'password'];
|
protected $fillable = ['name', 'email'];
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* The attributes excluded from the model's JSON form.
|
* The attributes excluded from the model's JSON form.
|
||||||
|
Loading…
Reference in New Issue
Block a user