Advertisement
Guest User

Untitled

a guest
Jan 14th, 2017
175
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 7.47 KB | None | 0 0
  1. Api routes
  2.  
  3. /**
  4. * API Authentication
  5. */
  6. Route::group(['middleware' => 'api'], function() {
  7. Route::post('/auth/signup', 'Auth\AuthAPIController@signup');
  8. Route::post('/auth/signin', 'Auth\AuthAPIController@signin');
  9. });
  10.  
  11. ----------------------------------
  12.  
  13. AuthAPIController
  14.  
  15. class AuthAPIController extends Controller
  16. {
  17. public function signin(LoginControllerRequest $request){
  18.  
  19. $credentials = $request->only('email','password');
  20.  
  21.  
  22. try {
  23. // attempt to verify the credentials and create a token for the user
  24. if (! $token = JWTAuth::attempt($credentials)) {
  25. return response()->json(['error' => 'invalid_credentials'], 401);
  26. }
  27. } catch (JWTException $e) {
  28. // something went wrong whilst attempting to encode the token
  29. return response()->json(['error' => 'could_not_create_token'], 500);
  30. }
  31.  
  32. // all good so return the token
  33. return Fractal::create()
  34. ->item($request->user())
  35. ->transformWith(new UserTransformer)
  36. ->addMeta([
  37. 'token' => $token
  38. ])
  39. ->toArray();
  40. }
  41.  
  42.  
  43. public function signup(ReqisterControllerRequest $request){
  44.  
  45. //dd($request->name);
  46. User::create([
  47. 'name' => $request->name,
  48. 'email' => $request->email,
  49. 'password' => bcrypt($request->password),
  50. ]);
  51.  
  52. }
  53. }
  54.  
  55. ----------------------------------------
  56.  
  57. Cors Middleware
  58.  
  59. class Cors
  60. {
  61. /**
  62. * Handle an incoming request.
  63. *
  64. * @param \Illuminate\Http\Request $request
  65. * @param \Closure $next
  66. * @return mixed
  67. */
  68. public function handle($request, Closure $next)
  69. {
  70. return $next($request)
  71. ->header('Access-Control-Allow-Origin','*')
  72. ->header('Access-Control-Allow-Methods','POST,GET,OPTIONS')
  73. ->header('Access-Control-Allow-Headers','X-Requested-With,Content-Type,Accept,Authorization');
  74. }
  75. }
  76.  
  77. Kernel.php
  78.  
  79. protected $middleware = [
  80. \Illuminate\Foundation\Http\Middleware\CheckForMaintenanceMode::class,
  81. \App\Http\Middleware\Cors::class,
  82. ];
  83.  
  84. -----------------------------------
  85.  
  86. Vue.js stuff
  87. ------------
  88. src/routes.js
  89.  
  90. import Vue from 'vue'
  91.  
  92. import VueRouter from 'vue-router'
  93.  
  94. import Home from './components/Home'
  95. import SignIn from './components/SignIn'
  96. import SignUp from './components/SignUp'
  97. import NewTopic from './components/NewTopic'
  98. import Topic from './components/Topic'
  99. import Topics from './components/Topics'
  100.  
  101. Vue.use(VueRouter)
  102.  
  103. const router = new VueRouter({
  104. routes:[
  105. {
  106. path:'/',
  107. component:Home,
  108. name:'home'
  109. },
  110. {
  111. path:'/signin',
  112. component:SignIn,
  113. name:'signin'
  114. },
  115. {
  116. path:'/signup',
  117. component:SignUp,
  118. name:'signup'
  119. },
  120. {
  121. path:'/topic/new',
  122. component:NewTopic,
  123. name:'newtopic'
  124. },
  125. {
  126. path:'/topic/:topicId',
  127. component:Topic,
  128. name:'topicbyId'
  129. },
  130. {
  131. path:'/section/:sectionId',
  132. component:Topics,
  133. name:'section'
  134. }
  135. ]
  136. })
  137.  
  138. export default router
  139.  
  140. --------------------------------------
  141. src/main.js
  142.  
  143. import Vue from 'vue'
  144. import App from './App'
  145. import Router from './routes.js'
  146. import VueResource from 'vue-resource'
  147.  
  148. Vue.use(VueResource)
  149. Vue.http.options.root = 'http://forumapi.app:8000'
  150.  
  151. export default Vue
  152. /* eslint-disable no-new */
  153. new Vue({
  154. el: '#app',
  155. components: { App },
  156. render : h =>h(App),
  157. router:Router
  158. })
  159.  
  160. ---------------------------------
  161.  
  162. src/auth/index.js
  163.  
  164. import Vue from '../main.js'
  165. import {router} from '../routes.js'
  166.  
  167. export default{
  168. signup(context,email,name,password) {
  169. Vue.http({
  170. url:'auth/signup',
  171. method:'POST',
  172. data:{
  173. email:email,
  174. name:name,
  175. password:password
  176. }
  177. }).then(response => {
  178. context.success = true
  179. }).catch(response => {
  180. context.response = response.data
  181. context.error = true
  182. })
  183. },
  184. signin(context, email, password){
  185. Vue.http({
  186. url:'auth/signin',
  187. method:'POST',
  188. data:{
  189. email:email,
  190. password:password
  191. }
  192. }).then(response => {
  193. console.log('ok');
  194. },response => {
  195. console.log('not')
  196. })
  197. }
  198. }
  199.  
  200. -------------------------------------------
  201. src/components/Signin.vue
  202.  
  203. <template>
  204. <div>
  205. <div class="alert alert-danger" v-if="error">
  206. <p>Error</p>
  207. </div>
  208. <div class="row">
  209. <div class="col-md-6 col-md-offset-3">
  210. <form autocomplete="off" v-on:submit="signin">
  211. <div class="form-group">
  212. <label for="email" class="label label-warning">Email</label>
  213. <input type="text" v-model="email" class="form-control" required/>
  214. </div>
  215. <div class="form-group">
  216. <label for="password" class="label label-warning">Password</label>
  217. <input type="password" v-model="password" class="form-control" required/>
  218. </div>
  219. <div class="form-group">
  220.  
  221. <button type="submit" class="form-control btn btn-primary">Sign Up</button>
  222. </div>
  223.  
  224.  
  225. </form>
  226.  
  227. </div>
  228.  
  229. </div>
  230. </div>
  231. </template>
  232.  
  233. <script>
  234. import auth from '../auth'
  235. export default{
  236. name:'signin',
  237. data(){
  238. return {
  239. email:null,
  240. password:null,
  241. error: false
  242. }
  243. },
  244. methods:{
  245. signin (e){
  246. e.preventDefault()
  247. auth.signin(this,this.email,this.password)
  248. }
  249. }
  250.  
  251. }
  252.  
  253. </script>
  254.  
  255. ERROR: POST http://forumapi.app:8000/auth/signin 422 (Unprocessable Entity)
  256. {email: ["The email field is required."], password: ["The password field is required."]}
  257.  
  258. i've console.log each field in the component, and i get the expected result, so data exists.
  259.  
  260. ----------------------------------------------------------------------------------------------
  261. src/components/SignUp.vue
  262.  
  263. <template>
  264. <div>
  265. <div class="alert alert-danger" v-if="error">
  266. <p>Error</p>
  267. </div>
  268. <div class="row">
  269. <div class="col-md-6 col-md-offset-3">
  270. <form autocomplete="off" v-on:submit="signup">
  271. <div class="form-group">
  272. <label for="email" class="label label-warning">Email</label>
  273. <input type="text" v-model="email" class="form-control" required/>
  274. </div>
  275. <div class="form-group">
  276. <label for="username" class="label label-warning">Username</label>
  277. <input type="text" v-model="username" class="form-control" required/>
  278. </div>
  279. <div class="form-group">
  280. <label for="password" class="label label-warning">Password</label>
  281. <input type="password" v-model="password" class="form-control" required/>
  282. </div>
  283. <div class="form-group">
  284.  
  285. <button type="submit" class="form-control btn btn-primary">Sign Up</button>
  286. </div>
  287.  
  288.  
  289. </form>
  290.  
  291. </div>
  292.  
  293. </div>
  294. </div>
  295. </template>
  296.  
  297. <script>
  298. import auth from '../auth'
  299. export default{
  300.  
  301. data(){
  302. return {
  303. email : null,
  304. password : null,
  305. username : null,
  306. error : false,
  307. success : false,
  308. response : null
  309.  
  310. }
  311. },
  312. methods:{
  313. signup(e){
  314. e.preventDefault()
  315. auth.signup(this,this.email,this.username,this.password)
  316. //console.log(this.email,this.name,this.password)
  317. }
  318. }
  319. }
  320. </script>
  321.  
  322. ERROR: POST http://forumapi.app:8000/auth/signin 422 (Unprocessable Entity)
  323. {email: ["The email field is required."], username: ["The username field is required."], password: ["The password field is required."]}
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement