예제 #1
0
 /**
  * Toggle subscription states for a user.
  *
  * @param Request $request
  * @param $id
  * @param $user_id
  * @return \Illuminate\Http\RedirectResponse
  */
 public function toggleSubscription(Request $request, $id, $user_id)
 {
     $user = User::findOrfail($user_id);
     if ($user->id != Auth::id() && !Auth::user()->can('board')) {
         abort(403);
     }
     $list = EmailList::findOrFail($id);
     if ($list->isSubscribed($user)) {
         if ($list->unsubscribe($user)) {
             $request->session()->flash('flash_message', 'You have been unsubscribed to the list ' . $list->name . '.');
             return Redirect::route('user::dashboard', ['id' => $user->id]);
         }
     } else {
         if ($list->is_member_only && !$user->member) {
             $request->session()->flash('flash_message', 'This list is only for members.');
             return Redirect::route('user::dashboard', ['id' => $user->id]);
         }
         if ($list->subscribe($user)) {
             $request->session()->flash('flash_message', 'You have been subscribed to the list ' . $list->name . '.');
             return Redirect::route('user::dashboard', ['id' => $user->id]);
         }
     }
     $request->session()->flash('flash_message', 'Something went wrong toggling your subscription for ' . $list->name . '.');
     return Redirect::route('user::dashboard', ['id' => $user->id]);
 }
예제 #2
0
 public function update($id = null, Request $request)
 {
     if ($id == null) {
         $id = Auth::id();
     }
     $user = User::find($id);
     if ($user == null) {
         abort(404);
     }
     if ($user->id != Auth::id() && !Auth::user()->can('board')) {
         abort(403);
     }
     $userdata['email'] = $request->input('email');
     $userdata['phone'] = str_replace(' ', '', $request->input('phone'));
     $userdata['website'] = $request->input('website');
     $userdata['phone_visible'] = $request->has('phone_visible');
     $userdata['receive_sms'] = $request->has('receive_sms');
     $validator = Validator::make($userdata, ['email' => 'required|email', 'phone' => 'required|regex:(\\+[0-9]{8,16})']);
     if ($validator->fails()) {
         return Redirect::route('user::dashboard', ['id' => $user->id])->withErrors($validator);
     }
     if ($userdata['email'] !== $user->email) {
         $email = ['old' => $user->email, 'new' => $userdata['email']];
         $name = $user->name;
         Mail::queue('emails.emailchange', ['changer' => ['name' => Auth::user()->name, 'ip' => $request->ip()], 'email' => $email, 'user' => $user], function ($message) use($name, $email) {
             $message->to($email['old'], $name)->to($email['new'], $name)->from('security@' . config('proto.emaildomain'), 'Have You Tried Turning It Off And On Again committee')->subject('Your e-mail address for S.A. Proto has been changed.');
         });
     }
     $user->fill($userdata);
     $user->save();
     Session::flash("flash_message", "Changes saved.");
     return Redirect::route('user::dashboard', ['id' => $user->id]);
 }
예제 #3
0
 public static function doSearch($term)
 {
     $data = ['users' => [], 'pages' => [], 'events' => [], 'committees' => []];
     $term = str_replace('%', '', $term);
     if (strlen($term) == 0) {
         return $data;
     }
     $term = explode(' ', $term);
     if (count($term) == 0) {
         return $data;
     }
     foreach ($term as $string) {
         $string = strtolower($string);
         if ($string == 'proto') {
             continue;
         }
         foreach (User::all() as $user) {
             if ((strlen($string) >= 3 && strpos(strtolower($user->name), $string) > -1 || strtolower($user->calling_name) == $string || $user->utwente_username && strlen($string) >= 5 && strpos(strtolower($user->utwente_username), $string) > -1 || intval($string) > 0 && $user->id == $string) && $user->member && Auth::check() && Auth::user()->member) {
                 if (array_key_exists($user->id, $data['users'])) {
                     $data['users'][$user->id]++;
                 } else {
                     $data['users'][$user->id] = 1;
                 }
             }
         }
         foreach (Page::all() as $page) {
             if ((strlen($string) >= 3 && strpos(strtolower($page->title), $string) > -1 || strlen($string) >= 3 && strpos(strtolower($page->content), $string) > -1) && (!$page->is_member_only || Auth::check() && Auth::user()->member)) {
                 if (array_key_exists($page->id, $data['pages'])) {
                     $data['pages'][$page->id] += substr_count(strtolower($page->title), $string) + substr_count(strtolower($page->content), $string);
                 } else {
                     $data['pages'][$page->id] = substr_count(strtolower($page->title), $string) + substr_count(strtolower($page->content), $string);
                 }
             }
         }
         foreach (Event::all() as $event) {
             if ((strlen($string) >= 3 && strpos(strtolower($event->title), $string) > -1 || strlen($string) >= 3 && strpos(strtolower($event->description), $string) > -1) && (!$event->secret || Auth::check() && Auth::user()->can('board'))) {
                 if (array_key_exists($event->id, $data['events'])) {
                     $data['events'][$event->id] += substr_count(strtolower($event->title), $string) + substr_count(strtolower($event->content), $string);
                 } else {
                     $data['events'][$event->id] = substr_count(strtolower($event->title), $string) + substr_count(strtolower($event->description), $string);
                     $data['events'][$event->id] -= SearchController::searchTimePenalty($event);
                 }
             }
         }
         foreach (Committee::all() as $committee) {
             if ((strlen($string) >= 3 && strpos(strtolower($committee->name), $string) > -1 || strlen($string) >= 3 && strpos(strtolower($committee->description), $string) > -1) && ($committee->public || Auth::check() && Auth::user()->can('board'))) {
                 if (array_key_exists($committee->id, $data['committees'])) {
                     $data['committees'][$committee->id] += substr_count(strtolower($committee->name), $string) + substr_count(strtolower($committee->description), $string);
                 } else {
                     $data['committees'][$committee->id] = substr_count(strtolower($committee->name), $string) + substr_count(strtolower($committee->description), $string);
                 }
             }
         }
     }
     arsort($data['users']);
     arsort($data['pages']);
     arsort($data['events']);
     arsort($data['committees']);
     return $data;
 }
예제 #4
0
 /**
  * Create a new participation for somebody else.
  *
  * @return \Illuminate\Http\Response
  */
 public function createFor($id, Request $request)
 {
     $user = User::findOrFail($request->user_id);
     $event = Event::findOrFail($id);
     $data = ['activity_id' => $event->activity->id, 'user_id' => $user->id];
     if ($request->has('helping_committee_id')) {
         $helping = HelpingCommittee::findOrFail($request->helping_committee_id);
         if (!$helping->committee->isMember($user)) {
             abort(500, $user->name . " is not a member of the " . $helping->committee->name . " and thus cannot help on behalf of it.");
         }
         $data['committees_activities_id'] = $helping->id;
     }
     if (!$event->activity) {
         abort(500, "You cannot subscribe for " . $event->title . ".");
     } elseif ($event->activity->getParticipation($user, $request->has('helping_committee_id') ? HelpingCommittee::findOrFail($request->input('helping_committee_id')) : null) !== null) {
         abort(500, "You are already subscribed for " . $event->title . ".");
     } elseif ($event->activity->closed) {
         abort(500, "This activity is closed, you cannot change participation anymore.");
     }
     $request->session()->flash('flash_message', 'You added ' . $user->name . ' for ' . $event->title . '.');
     $participation = new ActivityParticipation();
     $participation->fill($data);
     $participation->save();
     return Redirect::back();
 }
예제 #5
0
 /**
  * Remove the specified resource from storage.
  *
  * @param  int $id
  * @return \Illuminate\Http\Response
  */
 public function destroy($id)
 {
     $user = User::findOrFail($id);
     $user->photo()->dissociate();
     $user->save();
     Session::flash("flash_message", "Your profile picture has been cleared!");
     return Redirect::back();
 }
예제 #6
0
 public function users()
 {
     $ids = [];
     foreach ($this->orderlines as $orderline) {
         if (!in_array($orderline->user->id, $ids)) {
             $ids[] = $orderline->user->id;
         }
     }
     return User::withTrashed()->whereIn('id', $ids)->orderBy('id', 'asc')->get();
 }
예제 #7
0
 /**
  * Remove the specified resource from storage.
  *
  * @param  int $id
  * @return \Illuminate\Http\Response
  */
 public function destroy(Request $request, $id)
 {
     $user = User::findOrFail($id);
     if ($user->id != Auth::id() && !Auth::user()->can('board')) {
         abort(403);
     }
     $user->utwente_username = null;
     $user->save();
     $request->session()->flash('flash_message', 'The link with your University of Twente account has been deleted.');
     return Redirect::route('user::dashboard', ['id' => $user->id]);
 }
예제 #8
0
 public function revoke(Request $request, $id, $user)
 {
     if ($id == config('proto.rootrole')) {
         $request->session()->flash('flash_message', 'This role can only be manually removed in the database.');
         return Redirect::back();
     }
     $role = Role::findOrFail($id);
     $user = User::findOrFail($user);
     $user->roles()->detach($role->id);
     $request->session()->flash('flash_message', '<strong>' . $role->name . '</strong> has been revoked from ' . $user->name . '.');
     return Redirect::back();
 }
예제 #9
0
 public function yubikeyDelete($user_id, Request $request)
 {
     $user = User::findOrFail($user_id);
     if ($user->id != Auth::id() && !Auth::user()->can('board')) {
         abort(403);
     }
     if ($user->tfa_yubikey_identity !== null) {
         $user->tfa_yubikey_identity = null;
         $user->save();
     }
     $request->session()->flash('flash_message', 'YubiKey 2 Factor Authentication disabled!');
     return Redirect::route('user::dashboard', ['id' => $user->id]);
 }
예제 #10
0
 /**
  * Display the profile for a specific user.
  *
  * @param  int $id
  * @return \Illuminate\Http\Response
  */
 public function show($id = null)
 {
     if ($id == null) {
         $id = Auth::id();
     }
     $user = User::find($id);
     if ($user == null) {
         abort(404);
     }
     $ldap = $user->getUtwenteData();
     $pastCommittees = CommitteeMembership::onlyTrashed()->where('user_id', $user->id)->orderBy('created_at', 'desc')->get();
     return view('users.profile.profile', ['user' => $user, 'ldap' => $ldap, 'pastcommittees' => $pastCommittees]);
 }
예제 #11
0
파일: Email.php 프로젝트: saproto/saproto
 public function recipients()
 {
     if ($this->to_user) {
         return User::orderBy('name', 'asc')->get();
     } elseif ($this->to_member) {
         return User::has('member')->orderBy('name', 'asc')->get();
     } elseif ($this->to_list) {
         $userids = [];
         foreach ($this->lists as $list) {
             $userids = array_merge($userids, $list->users->lists('id')->toArray());
         }
         return User::whereIn('id', $userids)->orderBy('name', 'asc')->get();
     }
 }
예제 #12
0
 public function startoverlayprint(Request $request)
 {
     $user = User::find($request->input('id'));
     if (!$user) {
         return "This user could not be found!";
     }
     if (!$user->member) {
         return "Only members can have their card printed!";
     }
     $result = FileController::requestPrint('card', route('membercard::download', ['id' => $user->id, 'overlayonly' => 1]));
     if ($result === false) {
         return "Something went wrong trying to reach the printer service.";
     }
     return "The printer service responded: " . $result;
 }
예제 #13
0
 private function syncUsers($provider)
 {
     $activeIds = [];
     $this->info("Make sure all users exist in LDAP.");
     foreach (User::all() as $user) {
         $activeIds[] = $user->id;
         $ldapuser = $provider->search()->where('objectClass', 'user')->where('description', $user->id)->first();
         $username = $user->member ? $user->member->proto_username : "******" . $user->id;
         if ($ldapuser == null) {
             $this->info('Creating LDAP user for ' . $user->name . '.');
             $ldapuser = $provider->make()->user();
             $ldapuser->cn = $username;
             $ldapuser->description = $user->id;
             $ldapuser->save();
         }
         $ldapuser->move('cn=' . $username, 'OU=Members,OU=Proto,DC=ad,DC=saproto,DC=nl');
         $ldapuser->displayName = trim($user->name);
         $ldapuser->givenName = trim($user->calling_name);
         $ldapuser->mail = $user->email;
         $ldapuser->wWWHomePage = $user->website;
         if ($user->address) {
             $ldapuser->l = $user->address->city;
             $ldapuser->postalCode = $user->address->zipcode;
             $ldapuser->streetAddress = $user->address->street . " " . $user->address->number;
             $ldapuser->preferredLanguage = $user->address->country;
         } else {
             $ldapuser->l = null;
             $ldapuser->postalCode = null;
             $ldapuser->streetAddress = null;
             $ldapuser->preferredLanguage = null;
         }
         $ldapuser->telephoneNumber = $user->phone;
         $ldapuser->setAttribute('sAMAccountName', $username);
         $ldapuser->setUserPrincipalName($username . config('adldap.proto')['account_suffix']);
         if (!$user->member) {
             $ldapuser->setUserAccountControl(AccountControl::ACCOUNTDISABLE);
         }
         $ldapuser->save();
     }
     $this->info("Removing obsolete users from LDAP.");
     $users = $provider->search()->users()->get();
     foreach ($users as $user) {
         if (!$user->description[0] || !in_array($user->description[0], $activeIds)) {
             $this->info("Deleting LDAP user " . $user->description[0] . ".");
             $user->delete();
         }
     }
 }
예제 #14
0
 /**
  * Bulk store a newly created resource in storage.
  *
  * @param  \Illuminate\Http\Request $request
  * @return \Illuminate\Http\Response
  */
 public function bulkStore(Request $request)
 {
     for ($i = 0; $i < count($request->input('user')); $i++) {
         //dd($request);
         $user = User::findOrFail($request->input('user')[$i]);
         $product = Product::findOrFail($request->input('product')[$i]);
         $price = $request->input('price')[$i] != "" ? $request->input('price')[$i] : $product->price;
         $units = $request->input('units')[$i];
         $order = OrderLine::create(['user_id' => $user->id, 'product_id' => $product->id, 'original_unit_price' => $product->price, 'units' => $units, 'total_price' => $price * $units]);
         $order->save();
         $product->stock -= $units;
         $product->save();
     }
     $request->session()->flash('flash_message', 'Your manual orders have been added.');
     return Redirect::back();
 }
예제 #15
0
 /**
  * Store a newly created resource in storage.
  *
  * @param  \Illuminate\Http\Request $request
  * @return \Illuminate\Http\Response
  */
 public function store(Request $request)
 {
     if ($request->input('destination') != '') {
         $alias = Alias::create(['alias' => $request->input('alias'), 'destination' => $request->input('destination')]);
         $alias->save();
         $request->session()->flash('flash_message', 'Destination added to alias.');
         return Redirect::route('alias::index');
     } elseif ($request->input('user') != 'off') {
         $user = User::findOrFail($request->input('user'));
         $alias = Alias::create(['alias' => $request->input('alias'), 'user_id' => $user->id]);
         $alias->save();
         $request->session()->flash('flash_message', 'User added to alias.');
         return Redirect::route('alias::index');
     } else {
         $request->session()->flash('flash_message', 'No action performed.');
         return Redirect::route('alias::index');
     }
 }
예제 #16
0
 public function members(Request $request)
 {
     if (!Auth::check() || !Auth::user()->member) {
         abort(403);
     }
     $users = User::all();
     $data = array();
     foreach ($users as $user) {
         if (!$user->member) {
             continue;
         }
         if ($request->has('term') && strpos(strtolower($user->name), strtolower($request->term)) === false) {
             continue;
         }
         $member = new \stdClass();
         $member->name = $user->name;
         $member->id = $user->id;
         $data[] = $member;
     }
     return $data;
 }
예제 #17
0
 /**
  * Execute the console command.
  */
 public function handle()
 {
     $users = User::where('birthdate', 'LIKE', '%-' . date('m-d'))->has('member')->get();
     if ($users->count() > 0) {
         $this->info('Sending birthday notification to ' . $users->count() . ' people.');
         $adminoverview = [];
         foreach ($users as $user) {
             $adminoverview[] = ['id' => $user->id, 'name' => $user->name, 'age' => $user->age()];
             $name = $user->name;
             $email = $user->email;
             Mail::queue('emails.users.birthdayemail', ['user' => $user], function ($message) use($name, $email) {
                 $message->to($email, $name)->from('internal@' . config('proto.emaildomain'), config('proto.internal'))->subject('Happy birthday!');
             });
         }
         // For some super strange reason we cannot queue this e-mail... Well...
         Mail::queue('emails.users.birthdaylist', ['users' => $adminoverview], function ($message) {
             $message->to('board@' . config('proto.emaildomain'), 'S.A. Proto Board')->subject('Birthdays of today!');
         });
         $this->info("Done!");
     } else {
         $this->info("There are no jarige joppen today.");
     }
 }
예제 #18
0
 public function postEmail(Request $request)
 {
     $user = User::where('email', $request->email)->first();
     if ($user !== null) {
         AuthController::dispatchPasswordEmailFor($user);
         $request->session()->flash('flash_message', 'We\'ve dispatched an e-mail to you with instruction to reset your password.');
         return Redirect::route('homepage');
     } else {
         $request->session()->flash('flash_message', 'We could not find a user with the e-mail address you entered.');
         return Redirect::back();
     }
 }
예제 #19
0
 /**
  * Handle the event.
  *
  * @param  Events $event
  * @return void
  */
 public function handle(User $user, $remember)
 {
     $token = new Token();
     $token->generate();
     Session::put('token', $token->token);
     // We will grant the user all roles to which he is entitled!
     $rootcommittee = Committee::where('slug', config('proto.rootcommittee'))->first();
     $boardcommittee = Committee::where('slug', config('proto.boardcommittee'))->first();
     $omnomcom = Committee::where('slug', config('proto.omnomcom'))->first();
     $pilscie = Committee::where('slug', config('proto.pilscie'))->first();
     if ($user->isInCommittee($rootcommittee)) {
         if (!$user->hasRole('admin')) {
             $user->attachRole(Role::where('name', '=', 'admin')->first());
         }
     } else {
         if ($user->hasRole('admin')) {
             $user->detachRole(Role::where('name', '=', 'admin')->first());
         }
     }
     if ($user->isInCommittee($boardcommittee)) {
         if (!$user->hasRole('board')) {
             $user->attachRole(Role::where('name', '=', 'board')->first());
         }
     } else {
         if ($user->hasRole('board')) {
             $user->detachRole(Role::where('name', '=', 'board')->first());
         }
     }
     if ($user->isInCommittee($omnomcom)) {
         if (!$user->hasRole('omnomcom')) {
             $user->attachRole(Role::where('name', '=', 'omnomcom')->first());
         }
     } else {
         if ($user->hasRole('omnomcom')) {
             $user->detachRole(Role::where('name', '=', 'omnomcom')->first());
         }
     }
     if ($user->isInCommittee($pilscie)) {
         if (!$user->hasRole('pilscie')) {
             $user->attachRole(Role::where('name', '=', 'pilscie')->first());
         }
     } else {
         if ($user->hasRole('pilscie')) {
             $user->detachRole(Role::where('name', '=', 'pilscie')->first());
         }
     }
 }
예제 #20
0
 /**
  * Committee membership tools below
  */
 public function addMembership(Request $request)
 {
     $user = User::find($request->user_id);
     $committee = Committee::find($request->committee_id);
     if ($user == null) {
         abort(404);
     }
     if ($committee == null) {
         abort(404);
     }
     if (($committee->slug == config('proto.rootcommittee') || $committee->slug == config('proto.boardcommittee')) && !Auth::user()->can('admin')) {
         Session::flash("flash_message", "This committee is protected. Only the Have You Tried Turning It Off And On Again committee can change this committee.");
         return Redirect::back();
     }
     $membership = new CommitteeMembership();
     $membership->role = $request->role;
     $membership->edition = $request->edition;
     $membership->user_id = $request->user_id;
     $membership->committee_id = $request->committee_id;
     if (($membership->created_at = date('Y-m-d H:i:s', strtotime($request->start))) === false) {
         Session::flash("flash_message", "Ill-formatted start date.");
         return Redirect::back();
     }
     if ($request->end != "" && ($membership->deleted_at = date('Y-m-d H:i:s', strtotime($request->end))) === false) {
         Session::flash("flash_message", "Ill-formatted end date.");
         return Redirect::back();
     }
     $membership->save();
     Session::flash("flash_message", "You have added " . $membership->user->name . " to " . $membership->committee->name . ".");
     return Redirect::back();
 }
예제 #21
0
 public function unsubscribeLink(Request $request, $hash)
 {
     $data = EmailList::parseUnsubscribeHash($hash);
     $user = User::findOrFail($data->user);
     $list = EmailList::findOrFail($data->list);
     $sub = EmailListSubscription::where('user_id', $user->id)->where('list_id', $list->id)->first();
     if ($sub != null) {
         $request->session()->flash('flash_message', $user->name . ' has been unsubscribed from ' . $list->name);
         $sub->delete();
     } else {
         $request->session()->flash('flash_message', $user->name . ' was already unsubscribed from ' . $list->name);
     }
     return Redirect::route('homepage');
 }
예제 #22
0
 public function toggleHidden($id, Request $request)
 {
     $user = User::find($id);
     if ($user == null) {
         abort(404);
     }
     if ($user->id != Auth::id() && !Auth::user()->can('board')) {
         abort(403);
     }
     $user->address_visible = !$user->address_visible;
     $user->save();
     Session::flash("flash_message", "Your primary address is now " . ($user->address_visible ? 'visible' : 'hidden') . " for members.");
     return Redirect::back();
 }
예제 #23
0
 public function take($achievement_id, $user_id)
 {
     $achievement = Achievement::find($achievement_id);
     $user = User::find($user_id);
     if (!$user || !$achievement) {
         abort(404);
     }
     $achieved = AchievementOwnership::all();
     foreach ($achieved as $entry) {
         if ($entry->achievement_id == $achievement_id && $entry->user_id == $user_id) {
             $entry->delete();
             Session::flash('flash_message', "Achievement {$achievement->name} taken from {$user->name}.");
         }
     }
     return Redirect::back();
 }
예제 #24
0
 /**
  * Delete a user from the specified withdrawal.
  *
  * @param $id Withdrawal id.
  * @param $user_id User id.
  * @return \Illuminate\Http\RedirectResponse
  */
 public static function deleteFrom(Request $request, $id, $user_id)
 {
     $withdrawal = Withdrawal::findOrFail($id);
     if ($withdrawal->closed) {
         $request->session()->flash('flash_message', 'This withdrawal is already closed and cannot be edited.');
         return Redirect::back();
     }
     $user = User::findOrFail($user_id);
     foreach ($withdrawal->orderlinesForUseR($user) as $orderline) {
         $orderline->withdrawal()->dissociate();
         $orderline->save();
     }
     $request->session()->flash('flash_message', 'Orderlines for ' . $user->name . ' removed from this withdrawal.');
     return Redirect::back();
 }
예제 #25
0
 public function delete($id)
 {
     $user = User::find($id);
     if ($user == null) {
         abort(404);
     }
     if ($user->id != Auth::id() && !Auth::user()->can('board')) {
         abort(403);
     }
     if ($user->bank == null) {
         Session::flash("flash_message", "You don't have a bank authorization to revoke.");
         return Redirect::route('user::dashboard', ['id' => $id]);
     }
     if ($user->member) {
         Session::flash("flash_message", "As a member you cannot revoke your bank authorization. You can update it, though.");
         return Redirect::back();
     }
     $user->bank->delete();
     Session::flash("flash_message", "Deleted bank account.");
     return Redirect::route('user::dashboard', ['id' => $id]);
 }
예제 #26
0
 public function canAccess(User $user)
 {
     $permission = $this->permission;
     return $permission && $user->can($permission->name);
 }
예제 #27
0
 public function link($user_id, Request $request)
 {
     $user = User::findOrFail($user_id);
     if ($user->id != Auth::id() && !Auth::user()->can('board')) {
         abort(403);
     }
     $study = Study::findOrFail($request->study);
     $link = new StudyEntry();
     if (($link->created_at = date('Y-m-d H:i:s', strtotime($request->start))) === false || $request->start == "") {
         Session::flash("flash_message", "Ill-formatted start date.");
         return Redirect::back();
     }
     $link->deleted_at = null;
     if ($request->end != "" && ($link->deleted_at = date('Y-m-d H:i:s', strtotime($request->end))) === false) {
         Session::flash("flash_message", "Ill-formatted end date.");
         return Redirect::back();
     }
     $link->user()->associate($user);
     $link->study()->associate($study);
     $link->save();
     Session::flash("flash_message", "Your study has been saved.");
     return Redirect::route('user::dashboard', ['id' => $user->id]);
 }
예제 #28
0
 public function endTempAdmin($id)
 {
     $user = User::findOrFail($id);
     foreach ($user->tempadmin as $tempadmin) {
         if (Carbon::now()->between(Carbon::parse($tempadmin->start_at), Carbon::parse($tempadmin->end_at))) {
             $tempadmin->end_at = Carbon::now();
             $tempadmin->save();
         }
     }
     // Call Herbert webhook to run check through all connected admins. Will result in kick for users whose
     // temporary adminpowers were removed.
     file_get_contents(env('HERBERT_SERVER') . "/adminCheck");
     return redirect()->route('user::member::list');
 }
예제 #29
0
 private function constructForwarderList()
 {
     $data = [];
     // Constructing user forwarders.
     $users = User::all();
     foreach ($users as $user) {
         if ($user->member && $user->isActiveMember()) {
             $data[$user->member->proto_username] = [$user->email];
         }
     }
     // Constructing committee forwarders.
     $committees = Committee::all();
     foreach ($committees as $committee) {
         $destinations = [];
         $users = CommitteeMembership::withTrashed()->where('committee_id', $committee->id)->where('created_at', '<', date('Y-m-d H:i:s'))->where(function ($q) {
             $q->whereNull('deleted_at')->orWhere('deleted_at', '>', date('Y-m-d H:i:s'));
         })->get();
         foreach ($users as $user) {
             $destinations[] = $user->user->email;
         }
         if (count($destinations) > 0) {
             $data[$committee->slug] = $destinations;
             $data['committees'][] = $committee->slug . '@' . config('proto.emaildomain');
         }
     }
     // Constructing manual aliases.
     $aliases = Alias::all();
     foreach ($aliases as $alias) {
         if ($alias->destination) {
             $data[$alias->alias][] = $alias->destination;
         } else {
             $data[$alias->alias][] = $alias->user->email;
         }
     }
     return $data;
 }