Compare commits
2 Commits
a2751d4776
...
58472b28ca
| Author | SHA1 | Date | |
|---|---|---|---|
|
58472b28ca
|
|||
|
122af4aa54
|
4
.gitmodules
vendored
4
.gitmodules
vendored
@@ -1,3 +1,3 @@
|
||||
[submodule "resources/docs"]
|
||||
path = resources/docs
|
||||
[submodule "public/Dokumente"]
|
||||
path = public/Dokumente
|
||||
url = ssh://git@git.chaospott.de:2222/c3gov/docs.git
|
||||
|
||||
2340
.phpstorm.meta.php
Normal file
2340
.phpstorm.meta.php
Normal file
File diff suppressed because it is too large
Load Diff
28856
_ide_helper.php
Normal file
28856
_ide_helper.php
Normal file
File diff suppressed because it is too large
Load Diff
74
app/Http/Controllers/LoginController.php
Normal file
74
app/Http/Controllers/LoginController.php
Normal file
@@ -0,0 +1,74 @@
|
||||
<?php
|
||||
|
||||
namespace App\Http\Controllers;
|
||||
|
||||
use App\Models\RegisterToken;
|
||||
use App\Models\User;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
use Illuminate\Support\Facades\Hash;
|
||||
use Illuminate\Support\Facades\Log;
|
||||
|
||||
class LoginController extends Controller
|
||||
{
|
||||
//
|
||||
public function register(Request $request){
|
||||
// messageStatus success|failure|not permitted
|
||||
|
||||
|
||||
$json = ["messageStatus" => "failure", "errorMessage" => "idk"];
|
||||
|
||||
$mail = $request->input('mail');
|
||||
$username = $request->input('username');
|
||||
$password = Hash::make($request->input('password'));
|
||||
$token = $request->input('token');
|
||||
|
||||
if(preg_match('/@c3gov\.de$/', $mail) != 1){
|
||||
return ["messageStatus" => "not permitted", "errorMessage" => ""];
|
||||
}
|
||||
|
||||
$rt = RegisterToken::where('token', $token)->first();
|
||||
if($rt) {
|
||||
$u = User::whereEmail($mail)->first();
|
||||
if($u) {
|
||||
return ["messageStatus" => "failure", "errorMessage" => "Diese elektronische Postadresse wird bereits verwendet."];
|
||||
}
|
||||
try {
|
||||
$u = new User();
|
||||
$u->name = $username;
|
||||
$u->email = $mail;
|
||||
$u->email_verified_at = now();
|
||||
$u->password = $password;
|
||||
$u->save();
|
||||
|
||||
$rt->delete();
|
||||
} catch (\Exception $e) {
|
||||
return ["messageStatus" => "failure", "errorMessage" => $e->getMessage()];
|
||||
}
|
||||
} else {
|
||||
return ["messageStatus" => "failure", "errorMessage" => "Machen Sie die Musik aus."];
|
||||
}
|
||||
|
||||
return ["messageStatus" => "success", "errorMessage" => ""];
|
||||
}
|
||||
|
||||
public function login(Request $request){
|
||||
$mail = $request->input('mail');
|
||||
$password = $request->input('password');
|
||||
|
||||
$u = User::whereEmail($mail)->first();
|
||||
if($u){
|
||||
$u_pw = $u->password;
|
||||
|
||||
if(Hash::check($password, $u_pw)){
|
||||
Auth::login($u);
|
||||
return ["messageStatus" => "success", "errorMessage" => ""];
|
||||
} else {
|
||||
return ["messageStatus" => "failure", "errorMessage" => "Falsch. Einfach nur falsch."];
|
||||
}
|
||||
} else {
|
||||
return ["messageStatus" => "failure", "errorMessage" => "Falsch. Einfach nur falsch."];
|
||||
}
|
||||
}
|
||||
|
||||
}
|
||||
@@ -5,9 +5,15 @@ namespace App\Http\Controllers;
|
||||
use App\Models\TickerMessages;
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class TickerController extends Controller
|
||||
{
|
||||
public function showEditTicker(){
|
||||
|
||||
}
|
||||
|
||||
|
||||
public static function getTicker(){
|
||||
$t = "";
|
||||
foreach(TickerMessages::getMessages(App::getLocale())->get() as $message){
|
||||
|
||||
@@ -4,17 +4,19 @@ namespace App\Http\Controllers;
|
||||
|
||||
use Illuminate\Http\Request;
|
||||
use Illuminate\Support\Facades\App;
|
||||
use Illuminate\Support\Facades\Auth;
|
||||
|
||||
class WebsiteController extends Controller
|
||||
{
|
||||
|
||||
public function __construct(){
|
||||
public function __construct()
|
||||
{
|
||||
$this->setLang($_COOKIE['lang'] ?? 'de');
|
||||
}
|
||||
|
||||
private function setLang($lang)
|
||||
{
|
||||
if (! in_array($lang, ['de', 'en'])) {
|
||||
if (!in_array($lang, ['de', 'en'])) {
|
||||
$lang = 'de';
|
||||
}
|
||||
|
||||
@@ -22,9 +24,52 @@ class WebsiteController extends Controller
|
||||
}
|
||||
|
||||
//
|
||||
public function index(Request $request){
|
||||
public function index(Request $request)
|
||||
{
|
||||
return view('content.index');
|
||||
}
|
||||
|
||||
public function about(Request $request){
|
||||
return view('content.about');
|
||||
}
|
||||
|
||||
public function contact(Request $request){
|
||||
return view('content.contact');
|
||||
}
|
||||
|
||||
public function imprint(Request $request){
|
||||
return view('content.imprint');
|
||||
}
|
||||
|
||||
public function news(Request $request){
|
||||
return view('content.news');
|
||||
}
|
||||
|
||||
public function services(Request $request){
|
||||
return view('content.services');
|
||||
}
|
||||
|
||||
|
||||
return view('layout.app', ['page' => 'content.index']);
|
||||
// c3gov-Stuffs
|
||||
|
||||
public function showRegister()
|
||||
{
|
||||
return view('login.register');
|
||||
}
|
||||
|
||||
public function showLogin()
|
||||
{
|
||||
return view('login.login');
|
||||
}
|
||||
|
||||
public function editTicker(){
|
||||
if(Auth::check()){
|
||||
return view('ticker.edit');
|
||||
}
|
||||
abort(404);
|
||||
}
|
||||
|
||||
public function editNews(){
|
||||
|
||||
}
|
||||
}
|
||||
|
||||
19
app/Models/RegisterToken.php
Normal file
19
app/Models/RegisterToken.php
Normal file
@@ -0,0 +1,19 @@
|
||||
<?php
|
||||
|
||||
namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|RegisterToken newModelQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|RegisterToken newQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|RegisterToken query()
|
||||
* @mixin \Eloquent
|
||||
*/
|
||||
class RegisterToken extends Model
|
||||
{
|
||||
protected $table = 'register_tokens';
|
||||
protected $primaryKey = 'token';
|
||||
public $incrementing = false;
|
||||
public $timestamps = false;
|
||||
}
|
||||
@@ -4,6 +4,22 @@ namespace App\Models;
|
||||
|
||||
use Illuminate\Database\Eloquent\Model;
|
||||
|
||||
/**
|
||||
* @property int $id
|
||||
* @property string $language
|
||||
* @property string $message
|
||||
* @property \Illuminate\Support\Carbon|null $created_at
|
||||
* @property \Illuminate\Support\Carbon|null $updated_at
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|TickerMessages newModelQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|TickerMessages newQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|TickerMessages query()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|TickerMessages whereCreatedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|TickerMessages whereId($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|TickerMessages whereLanguage($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|TickerMessages whereMessage($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|TickerMessages whereUpdatedAt($value)
|
||||
* @mixin \Eloquent
|
||||
*/
|
||||
class TickerMessages extends Model
|
||||
{
|
||||
//
|
||||
|
||||
@@ -10,6 +10,31 @@ use Illuminate\Database\Eloquent\Factories\HasFactory;
|
||||
use Illuminate\Foundation\Auth\User as Authenticatable;
|
||||
use Illuminate\Notifications\Notifiable;
|
||||
|
||||
/**
|
||||
* @property int $id
|
||||
* @property string $name
|
||||
* @property string $email
|
||||
* @property \Illuminate\Support\Carbon|null $email_verified_at
|
||||
* @property string $password
|
||||
* @property string|null $remember_token
|
||||
* @property \Illuminate\Support\Carbon|null $created_at
|
||||
* @property \Illuminate\Support\Carbon|null $updated_at
|
||||
* @property-read \Illuminate\Notifications\DatabaseNotificationCollection<int, \Illuminate\Notifications\DatabaseNotification> $notifications
|
||||
* @property-read int|null $notifications_count
|
||||
* @method static \Database\Factories\UserFactory factory($count = null, $state = [])
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|User newModelQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|User newQuery()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|User query()
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|User whereCreatedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|User whereEmail($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|User whereEmailVerifiedAt($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|User whereId($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|User whereName($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|User wherePassword($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|User whereRememberToken($value)
|
||||
* @method static \Illuminate\Database\Eloquent\Builder<static>|User whereUpdatedAt($value)
|
||||
* @mixin \Eloquent
|
||||
*/
|
||||
#[Fillable(['name', 'email', 'password'])]
|
||||
#[Hidden(['password', 'remember_token'])]
|
||||
class User extends Authenticatable
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
"laravel/tinker": "^3.0"
|
||||
},
|
||||
"require-dev": {
|
||||
"barryvdh/laravel-ide-helper": "^3.7",
|
||||
"fakerphp/faker": "^1.23",
|
||||
"laravel/pail": "^1.2.5",
|
||||
"laravel/pint": "^1.27",
|
||||
@@ -86,4 +87,4 @@
|
||||
},
|
||||
"minimum-stability": "stable",
|
||||
"prefer-stable": true
|
||||
}
|
||||
}
|
||||
|
||||
297
composer.lock
generated
297
composer.lock
generated
@@ -4,7 +4,7 @@
|
||||
"Read more about it at https://getcomposer.org/doc/01-basic-usage.md#installing-dependencies",
|
||||
"This file is @generated automatically"
|
||||
],
|
||||
"content-hash": "91e8e1dfc8379caaf1c302443d694dfa",
|
||||
"content-hash": "41c3f2f807c63a47595eaa4e14742655",
|
||||
"packages": [
|
||||
{
|
||||
"name": "brick/math",
|
||||
@@ -5881,6 +5881,153 @@
|
||||
}
|
||||
],
|
||||
"packages-dev": [
|
||||
{
|
||||
"name": "barryvdh/laravel-ide-helper",
|
||||
"version": "v3.7.0",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/barryvdh/laravel-ide-helper.git",
|
||||
"reference": "ad7e37676f1ff985d55ef1b6b96a0c0a40f2609a"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/barryvdh/laravel-ide-helper/zipball/ad7e37676f1ff985d55ef1b6b96a0c0a40f2609a",
|
||||
"reference": "ad7e37676f1ff985d55ef1b6b96a0c0a40f2609a",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"barryvdh/reflection-docblock": "^2.4",
|
||||
"composer/class-map-generator": "^1.0",
|
||||
"ext-json": "*",
|
||||
"illuminate/console": "^11.15 || ^12 || ^13.0",
|
||||
"illuminate/database": "^11.15 || ^12 || ^13.0",
|
||||
"illuminate/filesystem": "^11.15 || ^12 || ^13.0",
|
||||
"illuminate/support": "^11.15 || ^12 || ^13.0",
|
||||
"php": "^8.2"
|
||||
},
|
||||
"require-dev": {
|
||||
"ext-pdo_sqlite": "*",
|
||||
"friendsofphp/php-cs-fixer": "^3",
|
||||
"illuminate/config": "^11.15 || ^12 || ^13.0",
|
||||
"illuminate/view": "^11.15 || ^12 || ^13.0",
|
||||
"larastan/larastan": "^3.1",
|
||||
"mockery/mockery": "^1.4",
|
||||
"orchestra/testbench": "^9.2 || ^10 || ^11.0",
|
||||
"phpstan/phpstan-phpunit": "^2.0",
|
||||
"phpunit/phpunit": "^10.5 || ^11.5.3 || ^12.5.12",
|
||||
"spatie/phpunit-snapshot-assertions": "^4 || ^5",
|
||||
"vlucas/phpdotenv": "^5"
|
||||
},
|
||||
"suggest": {
|
||||
"illuminate/events": "Required for automatic helper generation (^6|^7|^8|^9|^10|^11)."
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"laravel": {
|
||||
"providers": [
|
||||
"Barryvdh\\LaravelIdeHelper\\IdeHelperServiceProvider"
|
||||
]
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-master": "3.6-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Barryvdh\\LaravelIdeHelper\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Barry vd. Heuvel",
|
||||
"email": "barryvdh@gmail.com"
|
||||
}
|
||||
],
|
||||
"description": "Laravel IDE Helper, generates correct PHPDocs for all Facade classes, to improve auto-completion.",
|
||||
"keywords": [
|
||||
"autocomplete",
|
||||
"codeintel",
|
||||
"dev",
|
||||
"helper",
|
||||
"ide",
|
||||
"laravel",
|
||||
"netbeans",
|
||||
"phpdoc",
|
||||
"phpstorm",
|
||||
"sublime"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/barryvdh/laravel-ide-helper/issues",
|
||||
"source": "https://github.com/barryvdh/laravel-ide-helper/tree/v3.7.0"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://fruitcake.nl",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/barryvdh",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2026-03-17T14:12:51+00:00"
|
||||
},
|
||||
{
|
||||
"name": "barryvdh/reflection-docblock",
|
||||
"version": "v2.4.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/barryvdh/ReflectionDocBlock.git",
|
||||
"reference": "4f5ba70c30c81f2ce03a16a9965832cfcc31ed3b"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/barryvdh/ReflectionDocBlock/zipball/4f5ba70c30c81f2ce03a16a9965832cfcc31ed3b",
|
||||
"reference": "4f5ba70c30c81f2ce03a16a9965832cfcc31ed3b",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": ">=7.1"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpunit/phpunit": "^8.5.14|^9"
|
||||
},
|
||||
"suggest": {
|
||||
"dflydev/markdown": "~1.0",
|
||||
"erusev/parsedown": "~1.0"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-master": "2.3.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-0": {
|
||||
"Barryvdh": [
|
||||
"src/"
|
||||
]
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Mike van Riel",
|
||||
"email": "mike.vanriel@naenius.com"
|
||||
}
|
||||
],
|
||||
"support": {
|
||||
"source": "https://github.com/barryvdh/ReflectionDocBlock/tree/v2.4.1"
|
||||
},
|
||||
"time": "2026-03-05T20:09:01+00:00"
|
||||
},
|
||||
{
|
||||
"name": "brianium/paratest",
|
||||
"version": "v7.19.2",
|
||||
@@ -5974,6 +6121,154 @@
|
||||
],
|
||||
"time": "2026-03-09T14:33:17+00:00"
|
||||
},
|
||||
{
|
||||
"name": "composer/class-map-generator",
|
||||
"version": "1.7.1",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/composer/class-map-generator.git",
|
||||
"reference": "8f5fa3cc214230e71f54924bd0197a3bcc705eb1"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/composer/class-map-generator/zipball/8f5fa3cc214230e71f54924bd0197a3bcc705eb1",
|
||||
"reference": "8f5fa3cc214230e71f54924bd0197a3bcc705eb1",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"composer/pcre": "^2.1 || ^3.1",
|
||||
"php": "^7.2 || ^8.0",
|
||||
"symfony/finder": "^4.4 || ^5.3 || ^6 || ^7 || ^8"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^1.12 || ^2",
|
||||
"phpstan/phpstan-deprecation-rules": "^1 || ^2",
|
||||
"phpstan/phpstan-phpunit": "^1 || ^2",
|
||||
"phpstan/phpstan-strict-rules": "^1.1 || ^2",
|
||||
"phpunit/phpunit": "^8",
|
||||
"symfony/filesystem": "^5.4 || ^6 || ^7 || ^8"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"branch-alias": {
|
||||
"dev-main": "1.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Composer\\ClassMapGenerator\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jordi Boggiano",
|
||||
"email": "j.boggiano@seld.be",
|
||||
"homepage": "https://seld.be"
|
||||
}
|
||||
],
|
||||
"description": "Utilities to scan PHP code and generate class maps.",
|
||||
"keywords": [
|
||||
"classmap"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/composer/class-map-generator/issues",
|
||||
"source": "https://github.com/composer/class-map-generator/tree/1.7.1"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://packagist.com",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/composer",
|
||||
"type": "github"
|
||||
}
|
||||
],
|
||||
"time": "2025-12-29T13:15:25+00:00"
|
||||
},
|
||||
{
|
||||
"name": "composer/pcre",
|
||||
"version": "3.3.2",
|
||||
"source": {
|
||||
"type": "git",
|
||||
"url": "https://github.com/composer/pcre.git",
|
||||
"reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e"
|
||||
},
|
||||
"dist": {
|
||||
"type": "zip",
|
||||
"url": "https://api.github.com/repos/composer/pcre/zipball/b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
|
||||
"reference": "b2bed4734f0cc156ee1fe9c0da2550420d99a21e",
|
||||
"shasum": ""
|
||||
},
|
||||
"require": {
|
||||
"php": "^7.4 || ^8.0"
|
||||
},
|
||||
"conflict": {
|
||||
"phpstan/phpstan": "<1.11.10"
|
||||
},
|
||||
"require-dev": {
|
||||
"phpstan/phpstan": "^1.12 || ^2",
|
||||
"phpstan/phpstan-strict-rules": "^1 || ^2",
|
||||
"phpunit/phpunit": "^8 || ^9"
|
||||
},
|
||||
"type": "library",
|
||||
"extra": {
|
||||
"phpstan": {
|
||||
"includes": [
|
||||
"extension.neon"
|
||||
]
|
||||
},
|
||||
"branch-alias": {
|
||||
"dev-main": "3.x-dev"
|
||||
}
|
||||
},
|
||||
"autoload": {
|
||||
"psr-4": {
|
||||
"Composer\\Pcre\\": "src"
|
||||
}
|
||||
},
|
||||
"notification-url": "https://packagist.org/downloads/",
|
||||
"license": [
|
||||
"MIT"
|
||||
],
|
||||
"authors": [
|
||||
{
|
||||
"name": "Jordi Boggiano",
|
||||
"email": "j.boggiano@seld.be",
|
||||
"homepage": "http://seld.be"
|
||||
}
|
||||
],
|
||||
"description": "PCRE wrapping library that offers type-safe preg_* replacements.",
|
||||
"keywords": [
|
||||
"PCRE",
|
||||
"preg",
|
||||
"regex",
|
||||
"regular expression"
|
||||
],
|
||||
"support": {
|
||||
"issues": "https://github.com/composer/pcre/issues",
|
||||
"source": "https://github.com/composer/pcre/tree/3.3.2"
|
||||
},
|
||||
"funding": [
|
||||
{
|
||||
"url": "https://packagist.com",
|
||||
"type": "custom"
|
||||
},
|
||||
{
|
||||
"url": "https://github.com/composer",
|
||||
"type": "github"
|
||||
},
|
||||
{
|
||||
"url": "https://tidelift.com/funding/github/packagist/composer/composer",
|
||||
"type": "tidelift"
|
||||
}
|
||||
],
|
||||
"time": "2024-11-12T16:29:46+00:00"
|
||||
},
|
||||
{
|
||||
"name": "doctrine/deprecations",
|
||||
"version": "1.1.6",
|
||||
|
||||
@@ -0,0 +1,26 @@
|
||||
<?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::create('register_tokens', function (Blueprint $table) {
|
||||
$table->string('token')->primary();
|
||||
});
|
||||
}
|
||||
|
||||
/**
|
||||
* Reverse the migrations.
|
||||
*/
|
||||
public function down(): void
|
||||
{
|
||||
Schema::dropIfExists('register_tokens');
|
||||
}
|
||||
};
|
||||
@@ -4,6 +4,8 @@ return [
|
||||
'subtitle' => 'Ihr Amt für Reisepass-Angelegenheiten in der Bezirksregion CCC.',
|
||||
'logo' => 'Offizielles Logo des c3gov',
|
||||
'banner' => 'Banner. Abgebildet ist die c3gov-Verwaltungsvorschrift, ein Junghacker*innen-Pass und ein Hacker*innen-Reisepass.',
|
||||
'signed_in_as' => 'Angemeldet als:',
|
||||
'guest' => 'Gastkonto',
|
||||
'language' => [
|
||||
'en' => 'English',
|
||||
'de' => 'Deutsch',
|
||||
|
||||
@@ -4,6 +4,8 @@ return [
|
||||
'subtitle' => 'Your office for passport document affairs within the district region CCC.',
|
||||
'logo' => 'Official logo of the c3gov',
|
||||
'banner' => 'Banner. The c3gov laws are seen on a sheet of paper, and two different hacker passports.',
|
||||
'signed_in_as' => 'Signed in as:',
|
||||
'guest' => 'Guest account',
|
||||
'language' => [
|
||||
'en' => 'English',
|
||||
'de' => 'Deutsch',
|
||||
|
||||
BIN
public/Bilder/banner2.gif
Normal file
BIN
public/Bilder/banner2.gif
Normal file
Binary file not shown.
|
After Width: | Height: | Size: 286 KiB |
@@ -5,6 +5,7 @@
|
||||
|
||||
.banner {
|
||||
margin: 32px auto;
|
||||
min-height: 8vh;
|
||||
}
|
||||
|
||||
.language {
|
||||
@@ -18,13 +19,24 @@
|
||||
|
||||
.ticker {
|
||||
background-color: #0f0;
|
||||
min-height: 2vh;
|
||||
}
|
||||
|
||||
.main {
|
||||
|
||||
min-height: 80vh;
|
||||
}
|
||||
|
||||
.navbar {
|
||||
|
||||
background-color: pink;
|
||||
min-height: 80vh;
|
||||
}
|
||||
|
||||
.content {
|
||||
|
||||
background-color: aqua;
|
||||
min-height: 80vh;
|
||||
}
|
||||
|
||||
|
||||
|
||||
2
public/js/jquery/jquery-4.0.0.min.js
vendored
Normal file
2
public/js/jquery/jquery-4.0.0.min.js
vendored
Normal file
File diff suppressed because one or more lines are too long
39
public/js/login/login.js
Normal file
39
public/js/login/login.js
Normal file
@@ -0,0 +1,39 @@
|
||||
function setzeFehlermeldung(alertType, message){
|
||||
let f = $("#fehlermeldung");
|
||||
|
||||
f.removeClass('alert-success').removeClass('alert-danger').removeClass('alert-primary');
|
||||
f.addClass('alert-' + alertType);
|
||||
f.html(message);
|
||||
}
|
||||
|
||||
|
||||
function login(){
|
||||
let data = {};
|
||||
data.mail = $("#mail").val();
|
||||
data.password = $("#password").val();
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/intern/anmelden/einloggen",
|
||||
data: data,
|
||||
dataType: "json",
|
||||
success: function(d){
|
||||
switch(d.messageStatus){
|
||||
case "success":
|
||||
setzeFehlermeldung("success", "Sie wurden erfolgreich angemeldet.");
|
||||
location.reload();
|
||||
break;
|
||||
case "failure":
|
||||
setzeFehlermeldung("danger", "Es ist ein Fehler geschehen: " + d.errorMessage);
|
||||
break;
|
||||
case "not permitted":
|
||||
setzeFehlermeldung("warning", "Sie sind nicht berechtigt diese Funktion zu nutzen.");
|
||||
break;
|
||||
}
|
||||
},
|
||||
error: function(d, status, errorThrown) {
|
||||
setzeFehlermeldung("danger", "Es ist ein Fehler geschehen: " + errorThrown);
|
||||
}
|
||||
});
|
||||
|
||||
}
|
||||
48
public/js/login/registrieren.js
Normal file
48
public/js/login/registrieren.js
Normal file
@@ -0,0 +1,48 @@
|
||||
function setzeFehlermeldung(alertType, message){
|
||||
let f = $("#fehlermeldung");
|
||||
|
||||
f.removeClass('alert-success').removeClass('alert-danger').removeClass('alert-primary');
|
||||
f.addClass('alert-' + alertType);
|
||||
f.html(message);
|
||||
}
|
||||
|
||||
|
||||
function abschicken(){
|
||||
let data = {};
|
||||
data.mail = $("#mail").val();
|
||||
data.username = $("#username").val();
|
||||
data.password = $("#password").val();
|
||||
data.token = $("#register_token").val();
|
||||
|
||||
if(data.password !== $("#password_repeat").val()) {
|
||||
|
||||
setzeFehlermeldung("danger", "Ihr Kennwort stimmt nicht überein.");
|
||||
for(let i=0; i<Math.random() * 10; i++){
|
||||
alert("Ihr Kennwort stimmt nicht überein.");
|
||||
}
|
||||
} else {
|
||||
|
||||
$.ajax({
|
||||
type: "POST",
|
||||
url: "/intern/registrieren/abschicken",
|
||||
data: data,
|
||||
dataType: "json",
|
||||
success: function(d){
|
||||
switch(d.messageStatus){
|
||||
case "success":
|
||||
setzeFehlermeldung("success", "Sie wurden erfolgreich registriert.")
|
||||
break;
|
||||
case "failure":
|
||||
setzeFehlermeldung("danger", "Es ist ein Fehler geschehen: " + d.errorMessage);
|
||||
break;
|
||||
case "not permitted":
|
||||
setzeFehlermeldung("warning", "Sie sind nicht berechtigt diese Funktion zu nutzen.");
|
||||
break;
|
||||
}
|
||||
},
|
||||
error: function(d, status, errorThrown) {
|
||||
setzeFehlermeldung("danger", "Es ist ein Fehler geschehen: " + errorThrown);
|
||||
}
|
||||
});
|
||||
}
|
||||
}
|
||||
7
public/js/ticker/edit.js
Normal file
7
public/js/ticker/edit.js
Normal file
@@ -0,0 +1,7 @@
|
||||
function remove(lang){
|
||||
|
||||
}
|
||||
|
||||
function insert(lang){
|
||||
|
||||
}
|
||||
7
resources/views/content/about.blade.php
Normal file
7
resources/views/content/about.blade.php
Normal file
@@ -0,0 +1,7 @@
|
||||
@extends('layout.app')
|
||||
@section('scripts')
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
|
||||
@endsection
|
||||
7
resources/views/content/contact.blade.php
Normal file
7
resources/views/content/contact.blade.php
Normal file
@@ -0,0 +1,7 @@
|
||||
@extends('layout.app')
|
||||
@section('scripts')
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
|
||||
@endsection
|
||||
7
resources/views/content/imprint.blade.php
Normal file
7
resources/views/content/imprint.blade.php
Normal file
@@ -0,0 +1,7 @@
|
||||
@extends('layout.app')
|
||||
@section('scripts')
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
|
||||
@endsection<?php
|
||||
@@ -1 +1,5 @@
|
||||
@extends('layout.app')
|
||||
|
||||
@section('content')
|
||||
<h1>Guten Tag.</h1>
|
||||
@endsection
|
||||
|
||||
7
resources/views/content/news.blade.php
Normal file
7
resources/views/content/news.blade.php
Normal file
@@ -0,0 +1,7 @@
|
||||
@extends('layout.app')
|
||||
@section('scripts')
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
|
||||
@endsection
|
||||
7
resources/views/content/services.blade.php
Normal file
7
resources/views/content/services.blade.php
Normal file
@@ -0,0 +1,7 @@
|
||||
@extends('layout.app')
|
||||
@section('scripts')
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
|
||||
@endsection
|
||||
@@ -6,42 +6,54 @@
|
||||
<link rel="stylesheet" href="{{ asset("css/bootstrap/bootstrap.css") }}">
|
||||
<link rel="stylesheet" href="{{ asset("css/style.css") . "?rnd=" . rand(0, 1000000000) }}">
|
||||
<script src="{{ asset("js/bootstrap/bootstrap.bundle.js") }}"></script>
|
||||
<script src="{{ asset("js/jquery/jquery-4.0.0.min.js") }}"></script>
|
||||
<script src="{{ asset("js/web.js") }}"></script>
|
||||
@yield('scripts')
|
||||
</head>
|
||||
<body>
|
||||
<span class="grid">
|
||||
<span class="ticker row">
|
||||
<span class="col">
|
||||
<div class="grid">
|
||||
<div class="ticker row">
|
||||
<div class="col">
|
||||
<marquee>{{\App\Http\Controllers\TickerController::getTicker()}}</marquee>
|
||||
</span>
|
||||
</span>
|
||||
<span class="header row">
|
||||
<span class="header-main col">
|
||||
<img id="logo" src="{{ asset("Bilder/logo.png") }}" alt="{{ __('app.logo') }}">
|
||||
</span>
|
||||
<span class="banner col-8 text-center">
|
||||
<img src="{{ asset("Bilder/banner.jpg") }}" alt="{{ __("app.banner") }}">
|
||||
</span>
|
||||
<span class="language col">
|
||||
</div>
|
||||
</div>
|
||||
<div class="header row">
|
||||
<div class="header-main col">
|
||||
<a href="/">
|
||||
<img id="logo" src="{{ asset("Bilder/logo.png") }}" alt="{{ __('app.logo') }}">
|
||||
</a>
|
||||
</div>
|
||||
<div class="banner col-8 text-center">
|
||||
<img src="{{ asset("Bilder/banner2.gif") }}" alt="{{ __("app.banner") }}">
|
||||
</div>
|
||||
<div class="language col">
|
||||
<img alt="{{ __('app.language.de') }}" onclick="setLanguage('de')" src="{{ asset("Bilder/deutsch.gif") }}">
|
||||
<img alt="{{ __('app.language.en') }}" onclick="setLanguage('en')" src="{{ asset("Bilder/englisch.gif") }}">
|
||||
</span>
|
||||
</span>
|
||||
<span class="main row">
|
||||
<span class="navbar col-2">
|
||||
<br />
|
||||
{{ __('app.signed_in_as') }} {{Auth::user()->name ?? __("app.guest")}}
|
||||
</div>
|
||||
</div>
|
||||
<div class="main row">
|
||||
<div class="navbar col-2">
|
||||
<ul>
|
||||
<li><a href="{{ route('about') }}">{{ __('app.nav.about') }}</a></li>
|
||||
<li><a href="{{ route('services') }}">{{ __('app.nav.services') }}</a></li>
|
||||
<li><a href="{{ route('news') }}">{{ __('app.nav.news') }}</a></li>
|
||||
<li><a href="{{ route('contact') }}">{{ __('app.nav.contact') }}</li>
|
||||
<li><a href="{{ route('imprint') }}">{{ __('app.nav.imprint') }}</a></li>
|
||||
@auth
|
||||
<br />
|
||||
<li><a href="{{ route('editTicker') }}">Ticker bearbeiten</a></li>
|
||||
<li><a href="{{ route('editNews') }}">Nachrichten bearbeiten</a></li>
|
||||
<li><a href="{{ route('logout') }}">Abmelden</a></li>
|
||||
|
||||
@endauth
|
||||
</ul>
|
||||
</span>
|
||||
<span class="content col">
|
||||
@component($page)
|
||||
@endcomponent
|
||||
</span>
|
||||
</span>
|
||||
</span>
|
||||
</div>
|
||||
<div class="content col">
|
||||
@yield('content')
|
||||
</div>
|
||||
</div>
|
||||
</div>
|
||||
</body>
|
||||
</html>
|
||||
|
||||
31
resources/views/login/login.blade.php
Normal file
31
resources/views/login/login.blade.php
Normal file
@@ -0,0 +1,31 @@
|
||||
@extends('layout.app')
|
||||
@section('scripts')
|
||||
<script src="{{ asset("js/login/login.js") }}"></script>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<h1>Login</h1>
|
||||
|
||||
<span>
|
||||
|
||||
@guest
|
||||
<div id="fehlermeldung" class="alert alert-primary">Bitte melden Sie sich an.</div>
|
||||
|
||||
<label class="form-label" for="mail">Elektronische Postadresse:</label>
|
||||
<input class="form-control" type="text" id="mail" pattern="^[0-9A-Za-z+_\-]+@[0-9A-Za-z_\-]+\.[0-9A-Za-z]+$"
|
||||
title="Nur echte Adressen der elektronischen Post verwenden!"/>
|
||||
|
||||
<label class="form-label" for="password">Kennwort:</label>
|
||||
<input class="form-control" type="password" id="password">
|
||||
|
||||
<br/><br/>
|
||||
<button onclick="login()">Anmelden</button>
|
||||
|
||||
@endguest
|
||||
@auth
|
||||
<div id="fehlermeldung" class="alert alert-success">Sie sind angemeldet.</div>
|
||||
<a href="{{ route('logout') }}"><button>Abmelden</button></a>
|
||||
@endauth
|
||||
|
||||
</span>
|
||||
@endsection
|
||||
@@ -1,16 +1,33 @@
|
||||
<h1>Registrieren</h1>
|
||||
@extends('layout.app')
|
||||
@section('scripts')
|
||||
<script src="{{ asset("js/login/registrieren.js") }}"></script>
|
||||
@endsection
|
||||
|
||||
<span class="form-control">
|
||||
<label for="mail">E-Mail:</label>
|
||||
<input type="text" id="mail" />
|
||||
@section('content')
|
||||
<h1>Registrieren</h1>
|
||||
|
||||
<label for="username">Benutzername:</label>
|
||||
<input type="text" id="username" />
|
||||
<span>
|
||||
|
||||
<label for="password">Kennwort:</label>
|
||||
<input type="password" id="password">
|
||||
<div id="fehlermeldung" class="alert alert-primary">Bitte registrieren Sie sich.</div>
|
||||
|
||||
<label for="password_repeat">Kennwort wiederholen:</label>
|
||||
<input type="password" id="password_repeat">
|
||||
<label class="form-label" for="mail">Elektronische Postadresse:</label>
|
||||
<input class="form-control" type="text" id="mail" pattern="^[0-9A-Za-z+_\-]+@[0-9A-Za-z_\-]+\.[0-9A-Za-z]+$"
|
||||
title="Nur echte Adressen der elektronischen Post verwenden!"/>
|
||||
|
||||
<label class="form-label" for="username">(Vollständiger) Name:</label>
|
||||
<input class="form-control" type="text" id="username"/>
|
||||
|
||||
<label class="form-label" for="password">Kennwort:</label>
|
||||
<input class="form-control" type="password" id="password">
|
||||
|
||||
<label class="form-label" for="password_repeat">Kennwort wiederholen:</label>
|
||||
<input class="form-control" type="password" id="password_repeat">
|
||||
|
||||
<label class="form-label" for="register_token">Registrierungsnummer:</label>
|
||||
<input class="form-control" type="text" id="register_token">
|
||||
|
||||
<br/><br/>
|
||||
<button onclick="abschicken()" class="btn btn-success">Registrieren</button>
|
||||
|
||||
</span>
|
||||
@endsection
|
||||
|
||||
44
resources/views/ticker/edit.blade.php
Normal file
44
resources/views/ticker/edit.blade.php
Normal file
@@ -0,0 +1,44 @@
|
||||
@extends('layout.app')
|
||||
@section('scripts')
|
||||
<script src="{{ asset("js/ticker/edit.js") }}"></script>
|
||||
@endsection
|
||||
|
||||
@section('content')
|
||||
<h1>Ticker bearbeiten</h1>
|
||||
<br />
|
||||
<h2>Deutsch</h2>
|
||||
<label for="ticker_de">Aktive Tickernachrichten:</label>
|
||||
<select class="form-control" name="ticker_de" id="ticker_de" multiple>
|
||||
@foreach(\App\Models\TickerMessages::where('language', 'de')->orderBy('updated_at', 'desc')->get() as $tm)
|
||||
<option value="{{$tm->id}}">{{$tm->message}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<br />
|
||||
<button onclick="remove('de')">Ausgewählte Tickernachricht löschen</button>
|
||||
<br /><br /><br />
|
||||
|
||||
<label for="insert_de">Tickernachricht:</label>
|
||||
<input class="form-control" type="text" id="insert_de">
|
||||
<br />
|
||||
<button onclick="insert('de')">Tickernachricht hinzufügen</button>
|
||||
|
||||
<br />
|
||||
<hr />
|
||||
<br />
|
||||
|
||||
<h2>Englisch</h2>
|
||||
<label for="ticker_en">Aktive Tickernachrichten:</label>
|
||||
<select class="form-control" name="ticker_en" id="ticker_en" multiple>
|
||||
@foreach(\App\Models\TickerMessages::where('language', 'en')->orderBy('updated_at', 'desc')->get() as $tm)
|
||||
<option value="{{$tm->id}}">{{$tm->message}}</option>
|
||||
@endforeach
|
||||
</select>
|
||||
<br />
|
||||
<button onclick="remove('en')">Ausgewählte Tickernachricht löschen</button>
|
||||
<br /><br /><br />
|
||||
|
||||
<label for="insert_en">Tickernachricht:</label>
|
||||
<input class="form-control" type="text" id="insert_en">
|
||||
<br />
|
||||
<button onclick="insert('en')">Tickernachricht hinzufügen</button>
|
||||
@endsection
|
||||
@@ -1,5 +1,6 @@
|
||||
<?php
|
||||
|
||||
use App\Http\Controllers\LoginController;
|
||||
use App\Http\Controllers\WebsiteController;
|
||||
use Illuminate\Support\Facades\Route;
|
||||
|
||||
@@ -12,4 +13,16 @@ Route::get('/impressum', [WebsiteController::class, 'imprint'])->name('imprint')
|
||||
Route::get('/services', [WebsiteController::class, 'services'])->name('services');
|
||||
Route::get('/neuigkeiten', [WebsiteController::class, 'news'])->name('news');
|
||||
|
||||
Route::get('/intern/anmelden', [WebsiteController::class, 'login']);
|
||||
Route::get('/intern/registrieren', [WebsiteController::class, 'showRegister']);
|
||||
Route::post('/intern/registrieren/abschicken', [LoginController::class, 'register']);
|
||||
|
||||
Route::get('/intern/anmelden', [WebsiteController::class, 'showLogin']);
|
||||
Route::post('/intern/anmelden/einloggen', [LoginController::class, 'login']);
|
||||
|
||||
Route::get('/intern/abmelden', function(){
|
||||
Auth::logout();
|
||||
return redirect("/");
|
||||
})->name('logout');
|
||||
|
||||
Route::get('/intern/ticker', [WebsiteController::class, 'editTicker'])->name('editTicker');
|
||||
Route::get('/intern/nachrichten', [WebsiteController::class, 'editNews'])->name('editNews');
|
||||
|
||||
Reference in New Issue
Block a user