Example #1
0
 /**
  * Get the validation rules that apply to the request.
  *
  * @return array
  */
 public function rules()
 {
     $user_id = auth()->user()->id;
     // For some fail reson I cant get the UserRepository trait
     // to be happy here.
     // TODO: Fix that!
     $allowed_main_character_ids = implode(',', ApiKeyInfoCharacters::with('key')->whereHas('key', function ($query) use($user_id) {
         $query->where('user_id', $user_id);
     })->pluck('characterID')->toArray());
     $allowed_skins = implode(',', Profile::$options['skins']);
     $allowed_languages = implode(',', array_map(function ($entry) {
         return $entry['short'];
     }, config('web.locale.languages')));
     $allowed_sidebar = implode(',', Profile::$options['sidebar']);
     return ['main_character_id' => 'required|in:' . $allowed_main_character_ids, 'skin' => 'required|in:' . $allowed_skins, 'language' => 'required|in:' . $allowed_languages, 'sidebar' => 'required|in:' . $allowed_sidebar, 'thousand_seperator' => 'in:" ",",","."|size:1', 'decimal_seperator' => 'required|in:",","."|size:1', 'email_notifications' => 'required|in:yes,no', 'require_mfa' => 'required|in:yes,no'];
 }
Example #2
0
 /**
  * Query the database for characters, keeping filters,
  * permissions and affiliations in mind
  *
  * @param bool $get
  *
  * @return $this|\Illuminate\Database\Eloquent\Collection|static[]
  */
 public function getAllCharactersWithAffiliations(bool $get = true)
 {
     // Get the User for permissions and affiliation
     // checks
     $user = auth()->user();
     $characters = ApiKeyInfoCharacters::with('key', 'key.owner', 'key_info')->join('account_api_key_infos', 'account_api_key_infos.keyID', '=', 'account_api_key_info_characters.keyID')->join('eve_api_keys', 'eve_api_keys.key_id', '=', 'account_api_key_info_characters.keyID')->join('eve_character_infos', 'eve_character_infos.characterID', '=', 'account_api_key_info_characters.characterID')->where('account_api_key_infos.type', '!=', 'Corporation');
     // If the user is a super user, return all
     if (!$user->hasSuperUser()) {
         $characters = $characters->where(function ($query) use($user) {
             // If the user has any affiliations and can
             // list those characters, add them
             if ($user->has('character.list', false)) {
                 $query = $query->whereIn('account_api_key_info_characters.characterID', array_keys($user->getAffiliationMap()['char']));
             }
             // Add any characters from owner API keys
             $query->orWhere('eve_api_keys.user_id', $user->id);
         });
     }
     if ($get) {
         return $characters->groupBy('account_api_key_info_characters.characterID')->orderBy('account_api_key_info_characters.characterName')->get();
     }
     return $characters;
 }
Example #3
0
 /**
  * Query the databse for characters, keeping filters,
  * permissions and affiliations in mind
  *
  * @param \Illuminate\Http\Request|null $request
  *
  * @return \Illuminate\Database\Eloquent\Builder|mixed|static
  */
 public function getAllCharactersWithAffiliationsAndFilters(Request $request = null)
 {
     // Get the User for permissions and affiliation
     // checks
     $user = auth()->user();
     $characters = ApiKeyInfoCharacters::with('key', 'key.owner', 'key_info')->join('account_api_key_infos', 'account_api_key_infos.keyID', '=', 'account_api_key_info_characters.keyID')->join('eve_api_keys', 'eve_api_keys.key_id', '=', 'account_api_key_info_characters.keyID')->join('eve_character_infos', 'eve_character_infos.characterID', '=', 'account_api_key_info_characters.characterID')->where('account_api_key_infos.type', '!=', 'Corporation');
     // Apply any received filters
     if ($request && $request->filter) {
         $characters = $this->where_filter($characters, $request->filter, config('web.filter.rules.characters'));
     }
     // If the user is a super user, return all
     if (!$user->hasSuperUser()) {
         $characters = $characters->where(function ($query) use($user, $request) {
             // If the user has any affiliations and can
             // list those characters, add them
             if ($user->has('character.list', false)) {
                 $query = $query->whereIn('account_api_key_info_characters.characterID', array_keys($user->getAffiliationMap()['char']));
             }
             // Add any characters from owner API keys
             $query->orWhere('eve_api_keys.user_id', $user->id);
         });
     }
     return $characters->groupBy('account_api_key_info_characters.characterID')->orderBy('account_api_key_info_characters.characterName')->get();
 }
Example #4
0
 /**
  * @param $user_id
  *
  * @return \Illuminate\Database\Eloquent\Collection|static[]
  */
 public function getUserCharacters($user_id)
 {
     return ApiKeyInfoCharacters::with('key')->whereHas('key', function ($query) use($user_id) {
         $query->where('user_id', $user_id);
     })->get();
 }