Your Shop creates, verify user

This commit is contained in:
Kevin Adametz 2019-01-04 18:46:48 +01:00
parent c129a44383
commit ccc2af4bf7
76 changed files with 3728 additions and 1477 deletions

View file

@ -4,8 +4,7 @@ namespace App\Http\Controllers;
use App\Http\Controllers\Api\KasController;
use App\Models\Account;
use App\Models\UserAccount;
use App\Repositories\UserRepository;
use App\User;
use Illuminate\Support\Facades\Mail;
@ -31,23 +30,6 @@ class AdminUserController extends Controller
*/
public function index()
{
$kas = new KasController();
$pra = array(
'subdomain_name' => 'test',
'domain_name' => 'mivita.care',
'subdomain_path' => '/mein.mivita.care/public/',
//'php_version' => '7.1',
//'ssl_proxy' => 'Y',
//'redirect_status' => 0
);
//add_subdomain
$req = $kas->action('get_subdomains');
//"is_active"]=> string(1) "Y" ["in_progress"
var_dump($req);
die();
$data = [
//'values' => User::where('admin', 0)->get(),
'values' => User::where('confirmation_code_remider', '!=', 2)->get(),
@ -58,10 +40,10 @@ class AdminUserController extends Controller
public function edit($user_id)
{
$user = User::findOrFail($user_id);
/*if(!$user->account){
$user->account = new Account();
if(!$user->account){
$user->account = new UserAccount();
}
*/
$data = [
'user' => $user,
];

View file

@ -13,7 +13,7 @@ class DataTableController extends Controller
return view('datatable');
}
/*public function getLeads()
public function getLeads()
{
$query = User::where('deleted_at', '=', null);
@ -34,11 +34,15 @@ class DataTableController extends Controller
->addColumn('active', function (User $user) {
return $user->active ? ' <span class="badge badge-pill badge-success"><i class="far fa-check"></i></span>' : '<span class="badge badge-pill badge-danger"><i class="far fa-times"></i></span>';
})
->addColumn('agreement', function (User $user) {
return $user->agreement ? '<span class="badge badge-pill badge-success"><i class="far fa-check"></i></span>' : '<span class="badge badge-pill badge-danger"><i class="far fa-times"></i></span>';
})
->orderColumn('confirmed', 'confirmed $1')
->orderColumn('active', 'active $1')
->rawColumns(['action', 'confirmed', 'active'])
->orderColumn('agreement', 'agreement $1')
->rawColumns(['action', 'confirmed', 'active', 'agreement'])
->make(true);
}*/
}
public function getUsers()
{

View file

@ -60,6 +60,9 @@ class HomeController extends Controller
if($data == "imprint"){
$response = view('legal.imprint_de')->render();
}
if($data == "shop_term_of_use"){
$response = view('legal.shop_term_of_use_de')->render();
}
if(Request::ajax()) {
return response()->json(['response' => $response, 'target'=>$target]);
}
@ -117,4 +120,64 @@ class HomeController extends Controller
{
return view('legal.imprint');
}
public function verify($confirmation_code){
if( ! $confirmation_code)
{
return redirect('/status/error');
}
$user = User::whereConfirmationCode($confirmation_code)->first();
if ( ! $user)
{
return redirect('/status/not/found');
}
$user->confirmed = 1;
$user->confirmation_date = now();
$user->confirmation_code = null;
$user->confirmation_code_to = null;
$user->confirmation_code_remider = 0;
$user->save();
//Login!
Auth::login($user);
return redirect('/status/verify');
}
public function statusRegister(){
return view('status.status_register');
}
public function statusVerify(){
return view('status.status_verify');
}
public function statusError(){
return view('status.status_error');
}
public function notFound(){
return view('status.not_found');
}
/**
* @return string
*/
public function checkMail(){
$data = Input::all();
if($data['user_id'] == "new"){
if(User::where('email', $data['email'])->count()){
return json_encode(false);
}
}else{
if(User::where('email', $data['email'])->where('id', '!=', $data['user_id'])->count()){
return json_encode(false);
}
}
return json_encode(true);
}
}

View file

@ -0,0 +1,141 @@
<?php
namespace App\Http\Controllers;
use App\Mail\MailVerifyContact;
use App\Models\UserAccount;
use App\Repositories\UserRepository;
use App\User;
use Illuminate\Support\Facades\Mail;
use Input;
use Illuminate\Http\Request;
use Validator;
class LeadController extends Controller
{
protected $userRepo;
public function __construct(UserRepository $userRepo)
{
$this->middleware('admin');
$this->userRepo = $userRepo;
}
/**
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function index()
{
$data = [
'values' => User::where('admin', '=', 0)->where('confirmation_code_remider', '!=', 2)->get(),
];
return view('admin.leads', $data);
}
/**
* @param $id
* @return \Illuminate\Contracts\View\Factory|\Illuminate\View\View
*/
public function edit($id)
{
if($id == "new"){
$user = new User();
$user->account = new UserAccount();
}else{
$user = User::findOrFail($id);
if(!$user->account){
$user->account = new UserAccount();
}
}
$data = [
'user' => $user,
'can_change_mail' => true,
];
return view('admin.lead_edit', $data);
}
/**
* @param Request $request
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View
*/
public function store(Request $request)
{
$data = Input::all();
if ($data['user_id'] == "new") {
$user = new User();
$user->id = "new";
$user->account = new UserAccount();
$user->account->company_country_id = isset($data['company_country_id']) ? $data['company_country_id'] : 0;
$user->account->salutation = isset($data['salutation']) ? $data['salutation'] : 0;
$rules = array(
'salutation' => 'required',
'last_name' => 'required|max:255',
'country_id' => 'required|integer|min:1',
'email' => 'required|string|email|max:255|unique:users',
'email-confirm' => 'required|same:email',
);
} else {
$user = User::findOrFail($data['user_id']);
if(!$user->account){
$user->account = new UserAccount();
}
$rules = array(
'salutation' => 'required',
'last_name' => 'required|max:255',
'country_id' => 'required|integer|min:1',
'email' => 'required|string|email|max:255|exists:users,email',
'email-confirm' => 'required|same:email',
);
}
if(Input::get('company') == 1){
$rules['company_name'] = 'required|max:255';
$rules['company_country_id'] = 'required|integer|min:1';
}
$data = [
'user' => $user,
];
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails()) {
return view('admin.lead_edit', $data)->withErrors($validator);
} else {
$data = Input::all();
$this->userRepo->update(Input::all());
if(isset($data['contact_verify'])){
$user = $this->userRepo->getModel();
$unique = false;
do{
$confirmation_code = str_random(30);
if( User::where('confirmation_code', '=', $confirmation_code)->count() == 0){
$unique = true;
}
}
while(!$unique);
$user->lang = $user->getLandByCountry();
$user->confirmation_code = $confirmation_code;
$user->save();
Mail::to($user->email)->send(new MailVerifyContact($confirmation_code, $user));
}
\Session()->flash('alert-save', true);
return redirect('/admin/leads');
}
}
}

View file

@ -64,9 +64,6 @@ class UserDataController extends Controller
if ($validator->fails()) {
// get the error messages from the validator
$messages = $validator->messages();
// redirect our user back to the form with the errors from the validator
return view('user.edit', $data)->withErrors($validator);
} else {
@ -76,13 +73,77 @@ class UserDataController extends Controller
}
}
/**
* @return \Illuminate\Contracts\View\Factory|\Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector|\Illuminate\View\View
*/
public function userDataStore(){
$user = Auth::user();
if(!$user->account){
$user->account = new UserAccount();
}
$rules = array(
'salutation' => 'required',
'last_name' => 'required|max:255',
'country_id' => 'required|integer|min:1',
'email' => 'required|string|email|max:255|exists:users,email',
'email-confirm' => 'required|same:email',
);
if($user->active == 0){
$rules['accepted_data_protection'] = 'required';
$rules['accepted_active'] = 'required';
}
if(Input::get('company') == 1){
$rules['company_name'] = 'required|max:255';
$rules['company_country_id'] = 'required|integer|min:1';
}
$data = [
'user' => $user,
];
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails()) {
// get the error messages from the validator
$messages = $validator->messages();
// redirect our user back to the form with the errors from the validator
return view('user.edit', $data)->withErrors($validator);
} else {
$this->userRepo->update(Input::all());
if($user->active == 0) {
$account = $user->account;
$account->data_protection = now();
$account->save();
$user->active = 1;
$user->active_date = now();
$user->save();
}
if(Input::get('accepted_active') == "on"){
$user->agreement = now();
}else{
$user->agreement = null;
}
\Session()->flash('alert-save', true);
return redirect('/home');
}
}
/**
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function userDataAcceptedForm(){
$user = Auth::user();
if(Input::get('sender_accepted_infos') == "on"){
if(Input::get('accepted_active') == "on"){
$user->agreement = now();
}else {
$user->agreement = null;
@ -93,4 +154,59 @@ class UserDataController extends Controller
return redirect('/home');
}
/**
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function userDataFree(){
$user = Auth::user();
$user->active = 1;
$user->active_date = now();
$user->save();
return redirect('/home');
}
/**
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function userDataFreeForm(){
$user = Auth::user();
$rules = array(
'accepted_data_protection' => 'required'
);
$data = [
'user' => $user,
];
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails()) {
// get the error messages from the validator
$messages = $validator->messages();
// redirect our user back to the form with the errors from the validator
return view('home', $data)->withErrors($validator);
} else {
$account = $user->account;
$account->data_protection = now();
$account->save();
if(Input::get('accepted_active') == "on"){
$user->agreement = now();
}else{
$user->agreement = null;
}
$user->active = 1;
$user->active_date = now();
$user->save();
}
return redirect('/home');
}
}

View file

@ -0,0 +1,273 @@
<?php
namespace App\Http\Controllers;
use App\Http\Controllers\Api\KasController;
use App\Models\UserShop;
use App\Repositories\UserRepository;
use Auth;
use Input;
use Response;
use Validator;
class UserShopController extends Controller
{
protected $db;
protected $userRepo;
public function __construct(UserRepository $userRepo)
{
$this->middleware('auth');
$this->userRepo = $userRepo;
}
public function index()
{
$user = Auth::user();
$data = [
'user' => $user,
];
return view('user.shop', $data);
}
public function store()
{
$user = Auth::user();
$data = Input::all();
if(!$user->shop){
abort(404);
}
$user->shop->title = $data['title'];;
$user->shop->copy = $data['copy'];
$user->shop->info = $data['info'];
$user->shop->active = isset($data['active']) ? true : false;
$user->shop->save();
\Session()->flash('alert-save', true);
$data = [
'user' => $user,
];
return view('user.shop', $data);
}
// Upload FILE -----------------------------------------------------------------------------------------------------------------------
public function uploadImage(){
$user = Auth::user();
if(!$user->shop){
abort(404);
}
try {
$image = \App\Services\Slim::getImages('images')[0];
if ( isset($image['output']['data']) )
{
// Base64 of the image
$data = $image['output']['data'];
$file_ex = array( 'image/jpeg' => 'jpg', 'image/png' => 'png');
if (!isset($file_ex[$image['output']['type']])) {
\Session()->flash('alert-danger', 'File is not jpg or png!');
return redirect(route('user_shop'));
}
$ext = $file_ex[$image['output']['type']];
// Original file name
$name = $image['output']['name'];
$name = \App\Services\Slim::sanitizeFileName($name);
$name = uniqid() . '_' . $name;
$data = \Storage::disk('public')->put(
'images/shop/'.$name,
$data
);
$user->shop->filename = $name;
$user->shop->originalname = $image['output']['name'];
$user->shop->ext = $ext;
$user->shop->mine = $image['output']['type'];
$user->shop->size = $image['input']['size'];
$user->shop->save();
\Session()->flash('alert-success', "Datei hochgeladen");
return redirect(route('user_shop'));
}
\Session()->flash('alert-danger', "Datei leer");
return redirect(route('user_shop'));
}
catch (Exception $e) {
\Session()->flash('alert-danger', "Fehler".$e);
return redirect(route('user_shop'));
}
}
public function deleteImage(){
$user = Auth::user();
if(!$user->shop){
abort(404);
}
if($user->shop->filename){
$file = 'images/shop/'.$user->shop->filename;
\Storage::disk('public')->delete($file);
$user->shop->filename = null;
$user->shop->originalname = null;
$user->shop->ext = null;
$user->shop->mine = null;
$user->shop->size = null;
$user->shop->save();
\Session()->flash('alert-success', "Datei gelöscht");
return redirect(route('user_shop'));
}
\Session()->flash('alert-danger', "Datei nicht gefunden");
return redirect(route('user_shop'));
}
/**
* @return \Illuminate\Http\RedirectResponse|\Illuminate\Routing\Redirector
*/
public function userShopRegisterForm(){
if(Input::get('shop_submit') == 'check'){
$rules = array(
'user_shop_name' => ' required|alpha_dash|profanity|unique:user_shops,name|min:4|max:20|',
);
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails()) {
\Session()->flash('shop-name-error', 'error');
return redirect()->back()->withErrors($validator)->withInput();
}
\Session()->flash('shop-name-error', 'check');
return redirect(route('user_shop'))->withInput();
}
if(Input::get('shop_submit') == 'action') {
$rules = array(
'user_shop_name' => ' required|alpha_dash|profanity|unique:user_shops,name|min:4|max:20|',
);
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails()) {
\Session()->flash('shop-name-error', 'error');
}else{
\Session()->flash('shop-name-error', 'check');
}
$rules = array(
'user_shop_active' => 'accepted',
);
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails()) {
return redirect()->back()->withErrors($validator)->withInput();
}
//all is right - save
$user = Auth::user();
$data = Input::all();
$user_shop = UserShop::create([
'user_id' => $user->id,
'name' => $data['user_shop_name'],
'active' => true,
'active_date' => now(),
]
);
$ret = $this->userShopRegisterSubDomain($user_shop->slug);
if($ret['success'] === true){
\Session()->flash('alert-save', true);
}else{
$user_shop->forceDelete();
\Session()->flash('alert-error', $ret['error']);
}
return redirect(route('user_shop'));
}
}
public function userShopRegisterSubDomain($slug){
$kas = new KasController();
$domain = 'mivita.care';
//check if exisist
$subdomains = $kas->action('get_subdomains');
foreach ($subdomains as $subdomain){
$sub = str_replace(".".$domain, '', $subdomain['subdomain_name']);
if($sub == $slug){
return ['success' => false, 'error' => 'Fehler: Subdomain existierts bereits, bitte einen neues Namen wählen'];
}
}
//add
$full_subdomain_name = $slug.".".$domain;
$pra = array(
'subdomain_name' => $slug,
'domain_name' => $domain,
'subdomain_path' => '/mein.mivita.care/public/',
//'php_version' => '7.1',
//'ssl_proxy' => 'Y',
//'redirect_status' => 0
);
$add_subdomain = $kas->action('add_subdomain', $pra);
if($add_subdomain == $full_subdomain_name){
return ['success' => true];
}
return ['success' => false, 'error' => $add_subdomain];
}
/**
* @return string to ajax
*/
public function checkUserShopName(){
$rules = array(
'user_shop_name' => ' required|alpha_dash|profanity|unique:user_shops,name|min:4|max:20|',
);
$validator = Validator::make(Input::all(), $rules);
if ($validator->fails()) {
$messages = $validator->messages();
return Response::json(array(
'success' => false,
'errors' => $validator->getMessageBag()->toArray()
));
}
return Response::json(array(
'success' => true,
));
}
}

View file

@ -70,9 +70,7 @@ class UserUpdateEmailController extends Controller
}
/*
*
* public function adminChangeMail($user_id)
public function adminChangeMail($user_id)
{
if(!Auth::user()->isAdmin()){
abort(404);
@ -122,7 +120,7 @@ class UserUpdateEmailController extends Controller
}
}
*/

View file

@ -74,9 +74,14 @@ class SiteController extends Controller
}
if($subsite){
if(!view()->exists('web.templates.'.$subsite)){
abort(404);
}
return view('web.templates.'.$subsite);
}
if(!view()->exists('web.templates.'.$site)){
abort(404);
}
return view('web.templates.'.$site);
}