<?php

namespace App\Http\Controllers\Auth;

use App\Http\Controllers\Controller;
use App\Http\Requests\Auth\LoginRequest;
use App\Providers\RouteServiceProvider;
use Illuminate\Http\Request;
use Illuminate\Support\Facades\Auth;
use Illuminate\Support\Facades\Http;

class AuthenticatedSessionController extends Controller
{
  /**
  * Display the login view.
  *
  * @return \Illuminate\View\View
  */
  public function create()
  {
    return view('auth.login');
  }

  /**
  * Handle an incoming authentication request.
  *
  * @param  \App\Http\Requests\Auth\LoginRequest  $request
  * @return \Illuminate\Http\RedirectResponse
  */
  public function store(LoginRequest $request)
  {
    $request->authenticate();

    $request->session()->regenerate();

    try{
      $response = Http::get("https://".config('redmine.user').":".config('redmine.password')."@".config('redmine.url').'/my/account.json');
      $redmineUser = $response->object()->user;
      $request->session()->put('redmine_user', $redmineUser);
    }catch(\Exception $e){
      $request->session()->put('redmine_user', null);
    }

    return redirect()->intended(RouteServiceProvider::HOME);
  }

  /**
  * Destroy an authenticated session.
  *
  * @param  \Illuminate\Http\Request  $request
  * @return \Illuminate\Http\RedirectResponse
  */
  public function destroy(Request $request)
  {
    Auth::guard('web')->logout();

    $request->session()->invalidate();

    $request->session()->regenerateToken();

    return redirect('/');
  }
}
