Skip to content

Commit d768691

Browse files
committed
Create Model for Term Of Use acceptance
1 parent 6638305 commit d768691

4 files changed

Lines changed: 47 additions & 0 deletions

File tree

app/Jobs/UserCreateJob.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,8 @@
33
namespace App\Jobs;
44

55
use App\User;
6+
use App\UserTermOfUseAcceptance;
7+
use App\TermOfUseVersion;
68
use Illuminate\Support\Facades\Hash;
79

810
class UserCreateJob extends Job {
@@ -28,6 +30,13 @@ public function handle() {
2830
'email' => $this->email,
2931
'password' => Hash::make($this->password),
3032
'verified' => $this->verified,
33+
34+
]);
35+
36+
UserTermOfUseAcceptance::create([
37+
'user_id' => $user->id,
38+
'tou_version' => TermOfUseVersion::V0,
39+
'tou_accepted_at' => now(),
3140
]);
3241

3342
return $user;

app/TermOfUseVersion.php

Lines changed: 9 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,9 @@
1+
<?php
2+
3+
namespace App;
4+
5+
enum TermOfUseVersion: string {
6+
case V0 = 'v0';
7+
// case V1 = 'v1';
8+
// case V2 = 'v2';
9+
}

app/User.php

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -98,6 +98,10 @@ public function managesWikis(): \Illuminate\Database\Eloquent\Relations\BelongsT
9898
return $this->belongsToMany(Wiki::class, 'wiki_managers');
9999
}
100100

101+
public function touAcceptances(): \Illuminate\Database\Eloquent\Relations\BelongsToMany {
102+
return $this->belongsToMany(UserTermOfUseAcceptance::class, 'tou_acceptances');
103+
}
104+
101105
public function hasVerifiedEmail() {
102106
return (bool) $this->verified;
103107
}

app/UserTermOfUseAcceptance.php

Lines changed: 25 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,25 @@
1+
<?php
2+
3+
namespace App;
4+
5+
use Illuminate\Database\Eloquent\Factories\HasFactory;
6+
use Illuminate\Database\Eloquent\Model;
7+
8+
class UserTermOfUseAcceptance extends Model {
9+
use HasFactory;
10+
11+
const FIELDS = [
12+
'user_id',
13+
'tou_version',
14+
'tou_accepted_at',
15+
];
16+
17+
protected $fillable = self::FIELDS;
18+
19+
protected $visible = self::FIELDS;
20+
21+
protected $casts = [
22+
'tou_version' => TermOfUseVersion::class,
23+
'tou_accepted_at' => 'datetime',
24+
];
25+
}

0 commit comments

Comments
 (0)