-
-
Notifications
You must be signed in to change notification settings - Fork 10
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
- Loading branch information
Showing
101 changed files
with
4,148 additions
and
260 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
30 changes: 30 additions & 0 deletions
30
database/migrations/2014_10_12_000000_update_users_table.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,30 @@ | ||
<?php | ||
|
||
use Illuminate\Database\Migrations\Migration; | ||
use Illuminate\Database\Schema\Blueprint; | ||
use Illuminate\Support\Facades\Schema; | ||
|
||
return new class extends Migration | ||
{ | ||
/** | ||
* Run the migrations. | ||
*/ | ||
public function up(): void | ||
{ | ||
Schema::table('users', function (Blueprint $table) { | ||
$table->ulid('current_team_id')->nullable(); | ||
$table->string('profile_photo_path', 2048)->nullable(); | ||
}); | ||
} | ||
|
||
/** | ||
* Reverse the migrations. | ||
*/ | ||
public function down(): void | ||
{ | ||
Schema::table('users', function (Blueprint $table) { | ||
$table->dropColumn('current_team_id'); | ||
$table->dropColumn('profile_photo_path'); | ||
}); | ||
} | ||
}; |
46 changes: 46 additions & 0 deletions
46
database/migrations/2014_10_12_200000_add_two_factor_columns_to_users_table.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,46 @@ | ||
<?php | ||
|
||
use Illuminate\Database\Migrations\Migration; | ||
use Illuminate\Database\Schema\Blueprint; | ||
use Illuminate\Support\Facades\Schema; | ||
use Laravel\Fortify\Fortify; | ||
|
||
return new class extends Migration | ||
{ | ||
/** | ||
* Run the migrations. | ||
*/ | ||
public function up(): void | ||
{ | ||
Schema::table('users', function (Blueprint $table) { | ||
$table->text('two_factor_secret') | ||
->after('password') | ||
->nullable(); | ||
|
||
$table->text('two_factor_recovery_codes') | ||
->after('two_factor_secret') | ||
->nullable(); | ||
|
||
if (Fortify::confirmsTwoFactorAuthentication()) { | ||
$table->timestamp('two_factor_confirmed_at') | ||
->after('two_factor_recovery_codes') | ||
->nullable(); | ||
} | ||
}); | ||
} | ||
|
||
/** | ||
* Reverse the migrations. | ||
*/ | ||
public function down(): void | ||
{ | ||
Schema::table('users', function (Blueprint $table) { | ||
$table->dropColumn(array_merge([ | ||
'two_factor_secret', | ||
'two_factor_recovery_codes', | ||
], Fortify::confirmsTwoFactorAuthentication() ? [ | ||
'two_factor_confirmed_at', | ||
] : [])); | ||
}); | ||
} | ||
}; |
32 changes: 32 additions & 0 deletions
32
database/migrations/2020_05_21_100000_create_teams_table.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
<?php | ||
|
||
use App\Models\User; | ||
use Illuminate\Database\Migrations\Migration; | ||
use Illuminate\Database\Schema\Blueprint; | ||
use Illuminate\Support\Facades\Schema; | ||
|
||
return new class extends Migration | ||
{ | ||
/** | ||
* Run the migrations. | ||
*/ | ||
public function up(): void | ||
{ | ||
Schema::create('teams', function (Blueprint $table) { | ||
$table->ulid('id')->primary(); | ||
$table->foreignIdFor(User::class)->index(); | ||
$table->string('name'); | ||
$table->boolean('personal_team'); | ||
$table->boolean('requires_subscription')->default(true); | ||
$table->timestamps(); | ||
}); | ||
} | ||
|
||
/** | ||
* Reverse the migrations. | ||
*/ | ||
public function down(): void | ||
{ | ||
Schema::dropIfExists('teams'); | ||
} | ||
}; |
34 changes: 34 additions & 0 deletions
34
database/migrations/2020_05_21_200000_create_team_user_table.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,34 @@ | ||
<?php | ||
|
||
use TomatoPHP\TomatoAdmin\Models\Team; | ||
use App\Models\User; | ||
use Illuminate\Database\Migrations\Migration; | ||
use Illuminate\Database\Schema\Blueprint; | ||
use Illuminate\Support\Facades\Schema; | ||
|
||
return new class extends Migration | ||
{ | ||
/** | ||
* Run the migrations. | ||
*/ | ||
public function up(): void | ||
{ | ||
Schema::create('team_user', function (Blueprint $table) { | ||
$table->id(); | ||
$table->foreignIdFor(Team::class); | ||
$table->foreignIdFor(User::class); | ||
$table->string('role')->nullable(); | ||
$table->timestamps(); | ||
|
||
$table->unique(['team_id', 'user_id']); | ||
}); | ||
} | ||
|
||
/** | ||
* Reverse the migrations. | ||
*/ | ||
public function down(): void | ||
{ | ||
Schema::dropIfExists('team_user'); | ||
} | ||
}; |
33 changes: 33 additions & 0 deletions
33
database/migrations/2020_05_21_300000_create_team_invitations_table.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,33 @@ | ||
<?php | ||
|
||
use TomatoPHP\TomatoAdmin\Models\Team; | ||
use Illuminate\Database\Migrations\Migration; | ||
use Illuminate\Database\Schema\Blueprint; | ||
use Illuminate\Support\Facades\Schema; | ||
|
||
return new class extends Migration | ||
{ | ||
/** | ||
* Run the migrations. | ||
*/ | ||
public function up(): void | ||
{ | ||
Schema::create('team_invitations', function (Blueprint $table) { | ||
$table->ulid('id')->primary(); | ||
$table->foreignIdFor(Team::class)->constrained()->cascadeOnDelete(); | ||
$table->string('email'); | ||
$table->string('role')->nullable(); | ||
$table->timestamps(); | ||
|
||
$table->unique(['team_id', 'email']); | ||
}); | ||
} | ||
|
||
/** | ||
* Reverse the migrations. | ||
*/ | ||
public function down(): void | ||
{ | ||
Schema::dropIfExists('team_invitations'); | ||
} | ||
}; |
32 changes: 32 additions & 0 deletions
32
database/migrations/2023_01_01_000001_create_sessions_table.php
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,32 @@ | ||
<?php | ||
|
||
use App\Models\User; | ||
use Illuminate\Database\Migrations\Migration; | ||
use Illuminate\Database\Schema\Blueprint; | ||
use Illuminate\Support\Facades\Schema; | ||
|
||
return new class extends Migration | ||
{ | ||
/** | ||
* Run the migrations. | ||
*/ | ||
public function up(): void | ||
{ | ||
Schema::create('sessions', function (Blueprint $table) { | ||
$table->string('id')->primary(); | ||
$table->foreignIdFor(User::class)->nullable()->index(); | ||
$table->string('ip_address', 45)->nullable(); | ||
$table->text('user_agent')->nullable(); | ||
$table->longText('payload'); | ||
$table->integer('last_activity')->index(); | ||
}); | ||
} | ||
|
||
/** | ||
* Reverse the migrations. | ||
*/ | ||
public function down(): void | ||
{ | ||
Schema::dropIfExists('sessions'); | ||
} | ||
}; |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,23 @@ | ||
@component('mail::message') | ||
{{ __('You have been invited to join the :team team!', ['team' => $invitation->team->name]) }} | ||
|
||
@if (Laravel\Fortify\Features::enabled(Laravel\Fortify\Features::registration())) | ||
{{ __('If you do not have an account, you may create one by clicking the button below. After creating an account, you may click the invitation acceptance button in this email to accept the team invitation:') }} | ||
|
||
@component('mail::button', ['url' => route('register')]) | ||
{{ __('Create Account') }} | ||
@endcomponent | ||
|
||
{{ __('If you already have an account, you may accept this invitation by clicking the button below:') }} | ||
|
||
@else | ||
{{ __('You may accept this invitation by clicking the button below:') }} | ||
@endif | ||
|
||
|
||
@component('mail::button', ['url' => $acceptUrl]) | ||
{{ __('Accept Invitation') }} | ||
@endcomponent | ||
|
||
{{ __('If you did not expect to receive an invitation to this team, you may discard this email.') }} | ||
@endcomponent |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,139 @@ | ||
# Privacy & Cookie Statement | ||
|
||
At Eddy, we place a high value on your privacy. This Privacy & Cookie Statement outlines the personal data we collect, the reasons behind it, how we use your information, and the measures we take to safeguard your privacy. Throughout this document, "Eddy" "we" "us" and "our" all refer to our organization. | ||
|
||
## Purposes | ||
|
||
At Eddy, we process your personal data for a variety of purposes. In the following sections, we provide a detailed explanation of why we process certain types of personal data, the legal basis for doing so, and how long we retain your information. | ||
|
||
1. *Website visit* | ||
|
||
During your visit to our website, we process the following personal data: | ||
|
||
- Your IP address | ||
- Visitor analytics using Fathom's privacy-first analytics | ||
- Language, country, and pricing settings | ||
- Cloudflare DDoS protection and analytics | ||
|
||
This personal data is only kept as long as you visit the website; if you leave the website, this information is removed. The legal basis for processing this personal data is our legitimate interest in maintaining a website that functions properly and provides an optimal user experience. | ||
|
||
1. *Purchasing and using our services* | ||
|
||
When you purchase and use our services via our website, we will process certain personal data, which may require you to create an account. To set up and maintain your account, we will need the following personal data: | ||
|
||
- Name | ||
- (Business) telephone number | ||
- (Business) email address | ||
- Name of your organization | ||
- Invoice & payment details | ||
- Content of correspondence | ||
- Account information (login credentials) | ||
|
||
We require this information as part of our agreement with you and to maintain the relationship resulting from this agreement. We will store this information for the duration of our agreement, and certain information may be retained for a longer period if required by law (such as the legal tax retention period of seven years). | ||
|
||
3. *Contact* | ||
|
||
We provide multiple channels for contacting us, including phone, email, and our contact form. To respond to your inquiries through these channels, we will process the following personal data: | ||
|
||
- Name | ||
- (Business) email address | ||
- (Business) telephone number | ||
- Name of your organization | ||
- Any additional information you provide to us in your message | ||
|
||
We will use this information to effectively handle your request and fulfill our obligations under our agreement with you. We will retain this information until we determine that you are satisfied with our response. | ||
|
||
4. *Newsletter* | ||
|
||
We provide several options for staying up-to-date with the latest news about our company and services, such as subscribing to our newsletter. To send you our newsletter, we will only process your (business) email address, and we will use this information for as long as you remain subscribed to our newsletter. | ||
|
||
### Social media and marketing | ||
|
||
We maintain an active presence on various third-party platforms, which we use for marketing purposes. Examples of such platforms include Twitter, LinkedIn, and Google. Please note that we do not share your personal data with these platforms, as we highly value your privacy. Additionally, we do not use services like 'Custom Audiences' and 'Tailored Audiences', which require the sharing of customer relationship management (CRM) data. | ||
|
||
### Anonymization | ||
|
||
We may choose to anonymize certain personal data, which involves removing any identifying information so that the data can no longer be attributed to a specific individual. This anonymized data no longer qualifies as personal data and poses no privacy risks. | ||
|
||
We have a legitimate interest in anonymizing data, as it enables us to conduct statistical research and improve our website without compromising your privacy. | ||
|
||
## Third parties | ||
|
||
As allowed by law and in accordance with our privacy statement, Eddy may engage third-party providers to deliver certain services. These third-party providers are authorized to use your personal data only for the purposes specified in our privacy statement. Eddy has taken all necessary technical and organizational measures to ensure that your personal data is only used by these third-party providers in accordance with our instructions and for the intended purposes. | ||
|
||
Eddy collaborates with several third parties: | ||
|
||
1. Eddy uses OAuth2 to allow users to log in to our platform using their Git account credentials. If you choose to connect your Git account and explicitly agree to the terms and scope specified when connecting the OAuth2 provider, Eddy may also access your public and private repositories on the following Git providers: | ||
|
||
- Github (USA) | ||
|
||
2. Eddy uses an API token and/or username-password combination to interface with several Cloud Providers, but only if the customer chooses to deploy a virtual private server to the selected Cloud Provider. The Cloud Providers we work with for this purpose are: | ||
|
||
- Digital Ocean (USA) | ||
- Hetzner Cloud (Germany) | ||
|
||
3. Eddy uses the following payment providers for processing payments made by paying customers. Please note that this only applies to paying customers and not to users on the free trial: | ||
|
||
- Paddle (see <https://paddle.com/gdpr/>) | ||
|
||
4. We utilize Cloudflare's reverse proxy as a measure of protection against DDoS attacks, which applies to all visitors. This falls under the necessary category since it is crucial in safeguarding our deployment infrastructure. | ||
|
||
5. Our application and SaaS are hosted on servers located at Hetzner, Germany. Their privacy policy, which can be found at <https://www.hetzner.com/legal/privacy-policy>, provides more information about their security protocols. | ||
|
||
## Transfer of personal data | ||
|
||
Eddy and her (sub-)processors may transfer personal data outside the European Economic Area (EEA) insofar such transfer complies with the applicable privacy legislation, such as the GDPR. Transfer of personal data to companies outside of the EEA depends on which of our services you are using. Please see the information above or contact us if you have any questions. | ||
|
||
## Cookies | ||
|
||
We use functional and analytical cookies to optimize your experience on our website. Functional cookies are necessary for logging into our SaaS service, Eddy. Our analytical tools do not use cookies to track users. Please visit the Fathom website for more information, and refer to [Fathom's privacy policy](https://usefathom.com/privacy) for information on the privacy policies of our analytics solutions. | ||
|
||
We retain this personal data for the duration of your website visit and delete it when you leave. We process this data based on our legitimate interest in enhancing and improving our website and services. | ||
|
||
**Necessary / Functional Cookies** | ||
|
||
These cookies are necessary for a properly functioning website and do not require an opt in. | ||
|
||
| Name | Provider | Purpose | Retention | Type | | ||
| ----- | -------- | ------- | ---------- | ---- | | ||
| eddy_session | Eddy | Login status | 2 hours | Necessary | | ||
| remember_web | Eddy| Login status | 5 years | Necessary | | ||
| XSRF-TOKEN | Eddy | CSRF protection | 2 hours | Necessary | | ||
| paddlejs_campaign_referrer | Paddle | Paddle Checkout | 1 week | Necessary | | ||
|
||
## Rights | ||
|
||
We respect your rights under the GDPR and your rights may include the following: | ||
|
||
- The right to access | ||
- The right to correct and supplement | ||
- The right to be forgotten | ||
- The right to data portability | ||
- The right to restriction of processing | ||
- The right to object to automated decision-making and profiling | ||
- The right to object to data processing | ||
|
||
To exercise your rights or if you have any questions about the way we process your personal data, please use the contact information provided at the end of this privacy statement. | ||
|
||
We take your feedback, requests, and complaints seriously and will make every effort to handle them properly. If you are not satisfied with the handling of your request and/or complaint, you have the right to file a complaint with the national authority responsible for supervising compliance with the GDPR. In the Netherlands, this authority is the [Autoriteit Persoonsgegevens](https://www.autoriteitpersoonsgegevens.nl/). | ||
|
||
## Security measures | ||
|
||
Eddy has implemented various technical and organizational security measures to ensure the safety of your personal data. These security measures aim to prevent loss, abuse, unauthorized access or modification. Here are some examples: | ||
|
||
- We use TLS (Transport Layer Security) technology to protect the transmission of personal data through all online channels. | ||
- All equipment is password-protected. | ||
- Access to personal data is limited to a need-to-know basis. | ||
- We strive to comply with standard security norms related to our specific services. | ||
- We use a secure and properly certified hosting provider, and you can find more information about their system policies on Hetzner's website: <https://www.hetzner.com/legal/system-policies/>. | ||
|
||
## Contact details | ||
|
||
If you have any questions or concerns about how we process your personal data at Eddy, you can reach out to us using the following contact details: | ||
|
||
- Website: <https://eddy.management> | ||
- E-mail: info@eddy.management | ||
|
||
## Changes to the Privacy & Cookie Statement | ||
|
||
Eddy may update this Privacy & Cookie Statement from time to time. The latest version of this document was last modified on April 18, 2023. Any changes made to this statement will be posted on this website. It is recommended that you review this statement periodically to stay informed about how we are protecting your personal data. |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
# Terms of Service | ||
|
||
Eddy, also known as "Eddy Server Management", is a product of [Protone Media B.V.](https://protone.media) | ||
|
||
All offers, order acceptances, agreements, and communications are subject to the NLdigital Voorwaarden, which have been filed at the Rechtbank Midden-Nederland in Utrecht. The NLdigital Voorwaarden can be viewed below and downloaded in PDF format. Most computers and mobile devices have a built-in PDF reader, but you can also choose to use free software like Adobe Acrobat Reader. |
Oops, something went wrong.