This commit is contained in:
Pig Fang 2019-08-24 10:22:26 +08:00
parent 47ae815ce0
commit 63ac1c11dd
10 changed files with 25 additions and 419 deletions

View File

@ -45,7 +45,7 @@ class AdminController extends Controller
};
};
$userRegistration = $users->where('register_at', '>=', $oneMonthAgo)
$userRegistration = User::where('register_at', '>=', $oneMonthAgo)
->select('register_at')
->get()
->groupBy($grouping('register_at'))
@ -84,16 +84,16 @@ class AdminController extends Controller
switch ($data['receiver']) {
case 'all':
$users = $users->all();
$users = User::all();
break;
case 'normal':
$users = $users->where('permission', User::NORMAL)->get();
$users = User::where('permission', User::NORMAL)->get();
break;
case 'uid':
$users = $users->where('uid', $data['uid'])->get();
$users = User::where('uid', $data['uid'])->get();
break;
case 'email':
$users = $users->where('email', $data['email'])->get();
$users = User::where('email', $data['email'])->get();
break;
}
Notification::send($users, $notification);
@ -366,7 +366,7 @@ class AdminController extends Controller
$isSingleUser = $request->has('uid');
if ($isSingleUser) {
$users = $users->select(['uid', 'email', 'nickname', 'score', 'permission', 'register_at', 'verified'])
$users = User::select(['uid', 'email', 'nickname', 'score', 'permission', 'register_at', 'verified'])
->where('uid', intval($request->input('uid')))
->get();
} else {
@ -376,7 +376,7 @@ class AdminController extends Controller
$page = $request->input('page', 1);
$perPage = $request->input('perPage', 10);
$users = $users->select(['uid', 'email', 'nickname', 'score', 'permission', 'register_at', 'verified'])
$users = User::select(['uid', 'email', 'nickname', 'score', 'permission', 'register_at', 'verified'])
->where('uid', 'like', '%'.$search.'%')
->orWhere('email', 'like', '%'.$search.'%')
->orWhere('nickname', 'like', '%'.$search.'%')
@ -395,7 +395,7 @@ class AdminController extends Controller
});
return [
'totalRecords' => $isSingleUser ? 1 : $users->count(),
'totalRecords' => $isSingleUser ? 1 : User::count(),
'data' => $users,
];
}
@ -434,7 +434,7 @@ class AdminController extends Controller
public function userAjaxHandler(Request $request, User $users)
{
$action = $request->input('action');
$user = $users->find($request->uid);
$user = User::find($request->uid);
$currentUser = Auth::user();
if (! $user) {
@ -450,7 +450,7 @@ class AdminController extends Controller
'email' => 'required|email',
]);
if ($users->where('email', $request->email)->count() != 0) {
if (User::where('email', $request->email)->count() != 0) {
return json(trans('admin.users.operations.email.existed', ['email' => $request->input('email')]), 1);
}
@ -548,7 +548,7 @@ class AdminController extends Controller
'uid' => 'required|integer',
]);
$user = $users->find($request->uid);
$user = User::find($request->uid);
if (! $user) {
return json(trans('admin.users.operations.non-existent'), 1);

View File

@ -33,7 +33,7 @@ class AuthController extends Controller
event(new Events\UserTryToLogin($identification, $authType));
if ($authType == 'email') {
$user = $users->where('email', $identification)->first();
$user = User::where('email', $identification)->first();
} else {
$player = Player::where('name', $identification)->first();
$user = $player ? $player->user : null;
@ -124,7 +124,7 @@ class AuthController extends Controller
// If amount of registered accounts of IP is more than allowed amounts,
// then reject the register.
if ($users->where('ip', get_client_ip())->count() >= option('regs_per_ip')) {
if (User::where('ip', get_client_ip())->count() >= option('regs_per_ip')) {
return json(trans('auth.register.max', ['regs' => option('regs_per_ip')]), 7);
}
@ -192,7 +192,7 @@ class AuthController extends Controller
return json(trans('auth.forgot.frequent-mail'), 2);
}
$user = $users->where('email', $request->email)->first();
$user = User::where('email', $request->email)->first();
if (! $user) {
return json(trans('auth.forgot.unregistered'), 1);
@ -215,7 +215,7 @@ class AuthController extends Controller
public function reset(User $users, $uid)
{
return view('auth.reset')->with('user', $users->find($uid));
return view('auth.reset')->with('user', User::find($uid));
}
public function handleReset(Request $request, User $users, $uid)
@ -224,7 +224,7 @@ class AuthController extends Controller
'password' => 'required|min:8|max:32',
]);
$users->find($uid)->changePassword($validated['password']);
User::find($uid)->changePassword($validated['password']);
return json(trans('auth.reset.success'), 0);
}
@ -245,7 +245,7 @@ class AuthController extends Controller
throw new PrettyPageException(trans('user.verification.disabled'), 1);
}
$user = $users->find($uid);
$user = User::find($uid);
if (! $user || $user->verified) {
throw new PrettyPageException(trans('auth.verify.invalid'), 1);

View File

@ -97,7 +97,7 @@ class ClosetController extends Controller
$texture->likes++;
$texture->save();
$uploader = $users->find($texture->uploader);
$uploader = User::find($texture->uploader);
if ($uploader && $uploader->uid != $user->uid) {
$uploader->score += option('score_award_per_like', 0);
$uploader->save();
@ -139,7 +139,7 @@ class ClosetController extends Controller
$texture->likes--;
$texture->save();
$uploader = $users->find($texture->uploader);
$uploader = User::find($texture->uploader);
$uploader->score -= option('score_award_per_like', 0);
$uploader->save();

View File

@ -64,7 +64,7 @@ class ReportController extends Controller
->get()
->makeHidden(['informer'])
->map(function ($report) use ($users) {
$uploader = $users->find($report->uploader);
$uploader = User::find($report->uploader);
if ($uploader) {
$report->uploaderName = $uploader->nickname;
}
@ -119,7 +119,7 @@ class ReportController extends Controller
}
break;
case 'ban':
$uploader = $users->find($report->uploader);
$uploader = User::find($report->uploader);
if (! $uploader) {
return json(trans('admin.users.operations.non-existent'), 1);
}

View File

@ -147,7 +147,7 @@ class SkinlibController extends Controller
'currentUid' => $user ? $user->uid : 0,
'admin' => $user && $user->isAdmin(),
'inCloset' => $user && $user->closet()->where('tid', $texture->tid)->count() > 0,
'nickname' => ($up = $users->find($texture->uploader)) ? $up->nickname : null,
'nickname' => ($up = User::find($texture->uploader)) ? $up->nickname : null,
'report' => intval(option('reporter_score_modification', 0)),
]);
}
@ -277,7 +277,7 @@ class SkinlibController extends Controller
return json(trans('skinlib.no-permission'), 1);
}
$uploader = $users->find($t->uploader);
$uploader = User::find($t->uploader);
$score_diff = $t->size * (option('private_score_per_storage') - option('score_per_storage')) * ($t->public ? -1 : 1);
if ($t->public && option('take_back_scores_after_deletion', true)) {
$score_diff -= option('score_award_per_texture', 0);

View File

@ -130,7 +130,7 @@ class TextureController extends Controller
public function avatar(User $users, $base64_email, $size = 128)
{
$user = $users->where('email', base64_decode($base64_email))->first();
$user = User::where('email', base64_decode($base64_email))->first();
if ($user) {
return $this->avatarByTid($user->avatar, $size);

View File

@ -253,7 +253,7 @@ class UserController extends Controller
'password' => 'required|min:6|max:32',
]);
if ($users->where('email', $request->new_email)->count() > 0) {
if (User::where('email', $request->new_email)->count() > 0) {
return json(trans('user.profile.email.existed'), 1);
}

View File

@ -35,63 +35,6 @@ class User extends Authenticatable implements JWTSubject
protected $hidden = ['password', 'remember_token'];
protected static $mappings = [];
protected static function boot()
{
parent::boot();
$columns = [
'uid',
'email',
'nickname',
'score',
'avatar',
'password',
'ip',
'permission',
'last_sign_at',
'register_at',
'verified',
];
array_walk($columns, function ($column) {
static::$mappings[$column] = Arr::get(static::$mappings, $column, $column);
});
static::addGlobalScope(function (Builder $builder) {
$query = $builder->getQuery();
$mapItem = function ($item) {
if (Arr::has(static::$mappings, $item['column'])) {
$item['column'] = static::$mappings[$item['column']];
}
return $item;
};
$mapColumn = function ($column) {
return Arr::get(static::$mappings, $column, $column);
};
$query->wheres = array_map($mapItem, $query->wheres);
if ($query->columns) {
$query->columns = array_map($mapColumn, $query->columns);
}
if ($query->orders) {
$query->orders = array_map($mapItem, $query->orders);
}
if ($query->groups) {
$query->groups = array_map($mapColumn, $query->groups);
}
if ($query->havings) {
$query->havings = array_map($mapItem, $query->havings);
}
$builder->setQuery($query);
return $builder;
});
}
public function isAdmin()
{
return $this->permission >= static::ADMIN;
@ -102,111 +45,6 @@ class User extends Authenticatable implements JWTSubject
return $this->belongsToMany(Texture::class, 'user_closet')->withPivot('item_name');
}
public function getUidAttribute()
{
return intval($this->attributes[$this->primaryKey]);
}
public function getEmailAttribute()
{
return $this->attributes[static::$mappings['email']];
}
public function setEmailAttribute($value)
{
$this->attributes[static::$mappings['email']] = $value;
}
public function getNicknameAttribute()
{
return $this->attributes[static::$mappings['nickname']];
}
public function setNicknameAttribute($value)
{
$this->attributes[static::$mappings['nickname']] = $value;
}
public function getScoreAttribute()
{
return intval($this->attributes[static::$mappings['score']]);
}
public function setScoreAttribute($value)
{
$this->attributes[static::$mappings['score']] = $value;
}
public function getAvatarAttribute()
{
return intval($this->attributes[static::$mappings['avatar']]);
}
public function setAvatarAttribute($value)
{
$this->attributes[static::$mappings['avatar']] = $value;
}
public function getPasswordAttribute()
{
return $this->attributes[static::$mappings['password']];
}
public function setPasswordAttribute($value)
{
$this->attributes[static::$mappings['password']] = $value;
}
public function getIpAttribute()
{
return $this->attributes[static::$mappings['ip']];
}
public function setIpAttribute($value)
{
$this->attributes[static::$mappings['ip']] = $value;
}
public function getPermissionAttribute()
{
return intval($this->attributes[static::$mappings['permission']]);
}
public function setPermissionAttribute($value)
{
$this->attributes[static::$mappings['permission']] = $value;
}
public function getLastSignAtAttribute()
{
return $this->attributes[static::$mappings['last_sign_at']];
}
public function setLastSignAtAttribute($value)
{
$this->attributes[static::$mappings['last_sign_at']] = $value;
}
public function getRegisterAtAttribute()
{
return $this->attributes[static::$mappings['register_at']];
}
public function setRegisterAtAttribute($value)
{
$this->attributes[static::$mappings['register_at']] = $value;
}
public function getVerifiedAttribute()
{
return boolval($this->attributes[static::$mappings['verified']]);
}
public function setVerifiedAttribute($value)
{
$this->attributes[static::$mappings['verified']] = $value;
}
public function getPlayerNameAttribute()
{
$player = $this->players->first();

View File

@ -1,21 +0,0 @@
<?php
namespace Tests\Concerns;
use App\Models\User as Model;
class User extends Model
{
protected static $mappings = [
'email' => 'bs_email',
'nickname' => 'bs_nickname',
'score' => 'bs_score',
'avatar' => 'bs_avatar',
'password' => 'bs_password',
'ip' => 'bs_ip',
'permission' => 'bs_permission',
'last_sign_at' => 'bs_last_sign_at',
'register_at' => 'bs_register_at',
'verified' => 'bs_verified',
];
}

View File

@ -6,7 +6,6 @@ use Schema;
use Carbon\Carbon;
use App\Models\User;
use App\Models\Player;
use Tests\Concerns\User as ExtendedUser;
use Illuminate\Database\Schema\Blueprint;
use Illuminate\Foundation\Testing\DatabaseTransactions;
@ -14,216 +13,6 @@ class UserTest extends TestCase
{
use DatabaseTransactions;
public function testConvertQuery()
{
if (config('database.default') == 'mysql') {
$this->assertStringContainsString(
'where `bs_email`',
ExtendedUser::where('email', '')->toSql()
);
$this->assertStringContainsString(
'select `bs_email` from',
ExtendedUser::select(['email'])->toSql()
);
$this->assertStringContainsString(
'order by `bs_score`',
ExtendedUser::orderBy('score')->toSql()
);
$this->assertStringContainsString(
'group by `bs_permission`',
ExtendedUser::groupBy('permission')->toSql()
);
$this->assertStringContainsString(
'having `bs_permission`',
ExtendedUser::having('permission')->toSql()
);
} else {
$this->assertStringContainsString(
'where "bs_email"',
ExtendedUser::where('email', '')->toSql()
);
$this->assertStringContainsString(
'select "bs_email" from',
ExtendedUser::select(['email'])->toSql()
);
$this->assertStringContainsString(
'order by "bs_score"',
ExtendedUser::orderBy('score')->toSql()
);
$this->assertStringContainsString(
'group by "bs_permission"',
ExtendedUser::groupBy('permission')->toSql()
);
$this->assertStringContainsString(
'having "bs_permission"',
ExtendedUser::having('permission')->toSql()
);
}
}
public function testGetUidAttribute()
{
factory(User::class)->create();
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('uid', 'bs_uid');
});
$users = get_class(new class extends User {
protected $primaryKey = 'bs_uid';
protected $table = 'users';
protected static $mappings = ['uid' => 'bs_uid'];
});
$user = $users::first();
$this->assertEquals($user->getAttribute('bs_uid'), $user->uid);
}
public function testEmailAttribute()
{
factory(User::class)->create();
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('email', 'bs_email');
});
$user = ExtendedUser::first();
$this->assertEquals($user->getAttribute('bs_email'), $user->email);
$user->email = 'a@b.c';
$user->save();
$this->assertDatabaseHas('users', ['bs_email' => 'a@b.c']);
}
public function testNicknameAttribute()
{
factory(User::class)->create();
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('nickname', 'bs_nickname');
});
$user = ExtendedUser::first();
$this->assertEquals($user->getAttribute('bs_nickname'), $user->nickname);
$user->nickname = 'name';
$user->save();
$this->assertDatabaseHas('users', ['bs_nickname' => 'name']);
}
public function testScoreAttribute()
{
factory(User::class)->create();
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('score', 'bs_score');
});
$user = ExtendedUser::first();
$this->assertEquals($user->getAttribute('bs_score'), $user->score);
$user->score = 50;
$user->save();
$this->assertDatabaseHas('users', ['bs_score' => 50]);
}
public function testAvatarAttribute()
{
factory(User::class)->create();
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('avatar', 'bs_avatar');
});
$user = ExtendedUser::first();
$this->assertEquals($user->getAttribute('bs_avatar'), $user->avatar);
$user->avatar = 5;
$user->save();
$this->assertDatabaseHas('users', ['bs_avatar' => 5]);
}
public function testPasswordAttribute()
{
factory(User::class)->create();
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('password', 'bs_password');
});
$user = ExtendedUser::first();
$this->assertEquals($user->getAttribute('bs_password'), $user->password);
$user->password = '123';
$user->save();
$this->assertDatabaseHas('users', ['bs_password' => '123']);
}
public function testIpAttribute()
{
factory(User::class)->create();
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('ip', 'bs_ip');
});
$user = ExtendedUser::first();
$this->assertEquals($user->getAttribute('bs_ip'), $user->ip);
$user->ip = '255.255.255.255';
$user->save();
$this->assertDatabaseHas('users', ['bs_ip' => '255.255.255.255']);
}
public function testPermissionAttribute()
{
factory(User::class)->create();
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('permission', 'bs_permission');
});
$user = ExtendedUser::first();
$this->assertEquals($user->getAttribute('bs_permission'), $user->permission);
$user->permission = 1;
$user->save();
$this->assertDatabaseHas('users', ['bs_permission' => 1]);
}
public function testLastSignAtAttribute()
{
factory(User::class)->create();
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('last_sign_at', 'bs_last_sign_at');
});
$user = ExtendedUser::first();
$this->assertEquals($user->getAttribute('bs_last_sign_at'), $user->last_sign_at);
$time = Carbon::now()->toDateTimeString();
$user->last_sign_at = $time;
$user->save();
$this->assertDatabaseHas('users', ['bs_last_sign_at' => $time]);
}
public function testRegisterAtAttribute()
{
factory(User::class)->create();
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('register_at', 'bs_register_at');
});
$user = ExtendedUser::first();
$this->assertEquals($user->getAttribute('bs_register_at'), $user->register_at);
$time = Carbon::now()->toDateTimeString();
$user->register_at = $time;
$user->save();
$this->assertDatabaseHas('users', ['bs_register_at' => $time]);
}
public function testVerifiedAttribute()
{
factory(User::class)->create();
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('verified', 'bs_verified');
});
$user = ExtendedUser::first();
$this->assertEquals($user->getAttribute('bs_verified'), $user->verified);
$user->verified = 0;
$user->save();
$this->assertDatabaseHas('users', ['bs_verified' => 0]);
Schema::table('users', function (Blueprint $table) {
$table->renameColumn('bs_verified', 'verified');
});
}
public function testGetPlayerNameAttribute()
{
$user = factory(User::class)->create();