Advertisement
Guest User

Untitled

a guest
Jul 10th, 2017
117
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 6.97 KB | None | 0 0
  1. <?php
  2.  
  3. namespace App\Http\Controllers\Auth;
  4.  
  5. use App\User;
  6. use App\Http\Controllers\Controller;
  7. use Illuminate\Support\Facades\Validator;
  8. use Illuminate\Foundation\Auth\RegistersUsers;
  9. use App\Repositories\User\UserContract;
  10. use App\Repositories\Department\DepartmentContract;
  11. use Mail;
  12. use Reminder;
  13. use App\Mail\ActivateAccount;
  14. use App\Mail\PasswordReset;
  15. use Illuminate\Http\Request;
  16. use Sentinel;
  17. use Activation;
  18.  
  19. class RegisterController extends Controller
  20. {
  21. /*
  22. |--------------------------------------------------------------------------
  23. | Register Controller
  24. |--------------------------------------------------------------------------
  25. |
  26. | This controller handles the registration of new users as well as their
  27. | validation and creation. By default this controller uses a trait to
  28. | provide this functionality without requiring any additional code.
  29. |
  30. */
  31.  
  32. use RegistersUsers;
  33.  
  34. /**
  35. * Where to redirect users after registration.
  36. *
  37. * @var string
  38. */
  39. protected $redirectTo = '/home';
  40.  
  41. protected $repo;
  42. protected $deptRepo;
  43.  
  44. /**
  45. * Create a new controller instance.
  46. *
  47. * @return void
  48. */
  49. public function __construct(UserContract $userContract, DepartmentContract $deptContract)
  50. {
  51. // $this->middleware('guest');
  52. $this->repo = $userContract;
  53. $this->deptRepo = $deptContract;
  54. }
  55.  
  56. public function index()
  57. {
  58. if (!\Sentinel::getUser()) {
  59. return redirect()->route('login')
  60. ->with('error', 'Your Session has expired. Please login again!');
  61. }
  62.  
  63. $members = $this->repo->findAll();
  64. $departments = $this->deptRepo->findAll();
  65. $roles = \DB::table('roles')->get();
  66. return view('member.index')
  67. ->with('roles', $roles)->with('departments', $departments)
  68. ->with('members', $members);
  69. }
  70.  
  71. /**
  72. * Create a new user instance after a valid registration.
  73. *
  74. * @param array $data
  75. * @return User
  76. */
  77. public function handleRegistration(Request $request) {
  78. $this->validate($request, [
  79. 'surname' => 'required',
  80. 'other_names' => 'required',
  81. 'department' => 'required',
  82. 'rank' => 'required',
  83. 'gender' => 'required',
  84. 'type' => 'required',
  85. 'file_number' => 'required',
  86. 'phone' => 'required',
  87. 'appointment_type' => 'required',
  88. 'address' => 'required',
  89. 'email' => 'required|unique:users',
  90. 'nok' => 'required',
  91. 'nok_address' => 'required',
  92. 'nok_phone' => 'required',
  93. 'nok_relationship' => 'required',
  94. 'date_joined' => 'required',
  95. ]);
  96.  
  97. $number = $this->repo->validatePhoneNumber($request->phone);
  98. if(!$number) {
  99. return back()->withInput()->with('error', 'Invalid phone number. Try again!');
  100. }
  101.  
  102. try {
  103. $user = $this->repo->create($request);
  104. $code = \DB::table('activations')->where('user_id', $user->id)->first();
  105. Mail::to($user->email)->send(new ActivateAccount($user, $code));
  106.  
  107. if ($user) {
  108. return redirect()->route('member_index')
  109. ->with('success', 'User created successfully!');
  110. } else {
  111. return back()
  112. ->withInput()
  113. ->with('error', 'Could not create User. Try again!');
  114. }
  115. } catch (QueryException $e) {
  116. return back()
  117. ->withInput()
  118. ->with('error', 'User '.$request->surname. ' ' . $request->other_names . ' exists!');
  119. }
  120. }
  121.  
  122. public function update(Request $request, $id)
  123. {
  124. $this->validate($request, [
  125. 'surname' => 'required',
  126. 'other_names' => 'required',
  127. 'department' => 'required',
  128. 'rank' => 'required',
  129. 'gender' => 'required',
  130. 'type' => 'required',
  131. 'file_number' => 'required',
  132. 'phone' => 'required',
  133. 'appointment_type' => 'required',
  134. 'address' => 'required',
  135. 'email' => 'required|unique:users',
  136. 'nok' => 'required',
  137. 'nok_address' => 'required',
  138. 'nok_phone' => 'required',
  139. 'nok_relationship' => 'required',
  140. 'date_joined' => 'required',
  141. ]);
  142.  
  143. try {
  144. $member = $this->repo->edit($id, $request);
  145. if (is_object($member)) {
  146. return back()
  147. ->with('success', 'User successfully updated.');
  148. } else {
  149. return back()
  150. ->withInput()
  151. ->with('error', 'Could not update User. Try again!');
  152. }
  153. } catch (QueryException $e) {
  154. return back()
  155. ->withInput()
  156. ->with('error', 'User '.$request->surname. ' ' . $request->other_names . ' exists!');
  157. }
  158. }
  159.  
  160. public function delete($id)
  161. {
  162. if ($this->repo->discard($id)) {
  163. return redirect()->route('member_index')
  164. ->with('success', 'Member successfully deleted.');
  165. } else {
  166. return back()
  167. ->with('error', 'Could not delete Member. Try again!');
  168. }
  169. }
  170.  
  171. public function cancelCreation() {
  172. return redirect()->route('member_index')->with('info', 'Member creation Cancelled!');
  173. }
  174.  
  175. public function activateUser($id, $code){
  176. $user = Sentinel::findById($id);
  177. $a = Activation::complete($user, $code);
  178. return redirect()->route('login')->with('success', 'Account activated. Log In!');
  179. }
  180.  
  181. public function recoverPassword(Request $request){
  182. $this->validate($request, [
  183. 'email' => 'required'
  184. ]);
  185.  
  186. $user = User::where('email', $request->email)->first();
  187.  
  188. if(!$user){
  189. return back()
  190. ->withInput()
  191. ->with('error', "Your email doesn't exist on our database!");
  192. }else{
  193. if(!$reminder = Reminder::exists($user)){
  194. $reminder = Reminder::create($user);
  195. }
  196.  
  197. Mail::to($user)->send(new PasswordReset($user, $reminder->code));
  198.  
  199. return back()
  200. ->withInput()
  201. ->with('success', 'Check your email!!!');
  202. }
  203. }
  204.  
  205. public function newPassword(Request $request){
  206. $this->validate($request, [
  207. 'password' => 'required|confirmed',
  208. ]);
  209. if(($request->password) != ($request->confirm_password)){
  210. return back()
  211. ->with('error', 'Passwords do not match. Try Again!!!');
  212. }
  213. $user = Sentinel::findById($request->id);
  214. if ($reminder = Reminder::complete($user, $request->code, $request->confirm_password)){
  215. return redirect()->route('login')
  216. ->with('success', 'Password updated successfully');
  217. }else{
  218. return back()
  219. ->with('error', 'Password Reset Error, Try Again!!!');
  220. }
  221. $user->password = bcrypt($request->password);
  222. $user->save();
  223. }
  224. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement