Armin Rahmati
3 سال پیش توسط Armin Rahmati مطرح شد
5 پاسخ

ثبت نام با سرویس پیامکی قاصدک

سلام دوستان.
من وقتی میخوام یه کاربر رو لاگین کنم به صورت زیر کدامو نوشتم:
روت:

Route::post('login' , [\App\Http\Controllers\Api\v1\AuthController::class, 'login']);

کنترلر:

public function login(Request $request)
    {
        $validData = $request->validate([
            'phone' => ['required' , 'regex:/^09(1[0-9]|3[1-9]|2[1-9])-?[0-9]{3}-?[0-9]{4}$/' ,'exists:users,phone']
        ]);

        $user = User::wherePhone($validData['phone'])->first();

        $code = ActiveCode::generateCode($user);
        $user->notify(new ActiveCodeNotification($code , $validData['phone']));

        return response()->json($user, 200);
    }

Channel:

<?php

namespace App\Notifications\Channels;

use Ghasedak\Exceptions\ApiException;
use Ghasedak\Exceptions\HttpException;
use Illuminate\Notifications\Notification;

class GhasedakChannel
{
    public function send($notifiable , Notification $notification)
    {
        if(! method_exists($notification , 'toGhasedakSms')) {
            throw new \Exception('toGhasedakSms not found');
        }

        $data = $notification->toGhasedakSms($notifiable);

        $message = $data['text'];
        $receptor = $data['number'];

        $apiKey = config('services.ghasedak.key');

        try
        {
            $lineNumber = "10008566";;
            $api = new \Ghasedak\GhasedakApi($apiKey);
            $api->SendSimple($receptor,$message,$lineNumber);
        }
        catch(ApiException $e){
            throw $e;
        }
        catch(HttpException $e){
            throw $e;
        }
    }
}

و به درستی هم کار میکنه.
حالا اگه بخوام ثبت نام رو انجام بدم باید کنترلر رو چطور بنویسم، در واقع کد رو چطوری به شماره موبایل مورد نظر ارسال کنم؟


ثبت پرسش جدید
فرشید مرادی
تخصص : noob
@eniack 3 سال پیش آپدیت شد
0

سلام وقت بخیر ،
خب ببینید برای ثبت نام مثلا نام کاربری ایمیل و شماره تماس رو میگیرید ، کاربر فیلدهای مربوطه رو که پر کرد روی دکمه ثبت نام زد
ابتدا کد رو ارسال میکنید به شماره همراه و باید روت رو عوض کنید(کاربر فرستاده میشه به یک ویو دیگه جایی که باید کد ارسالی رو وارد کنه) مثلا فرستاده میشه به
register/verify
شما فیلدهارو بوسیله فلش سشن ارسال میکنید به روت verfy
و اینجا چک میشه اگر کد مربوطه درست بود و برای همین کاربر بود بوسیله مقادیری که با فلش سشن فرستاده شده ثبت نام انجام میشه اگر نه برمیگرده به روت قبلی


Armin Rahmati
@arminrahmati999 3 سال پیش مطرح شد
0

@eniack
کدمو به صورت زیر نوشتم:

public function register(Request $request)
    {
        $validData = $request->validate([
            'phone' => ['required' , 'regex:/^09(1[0-9]|3[1-9]|2[1-9])-?[0-9]{3}-?[0-9]{4}$/' ,'exists:users,phone']
        ]);

        $apiKey = config('services.ghasedak.key');
        $api = new GhasedakApi($apiKey);
        $api->SendSimple(
            $validData['phone'], 
            "Hello World!",
            "10008566"   
        );

        return response()->json('OK', 200);
    }

الان پیامک ارسال میشه ولی چطور کد تایید رو بفرستم، الان به عنوان تست Hello World رو میفرستم


فرشید مرادی
تخصص : noob
@eniack 3 سال پیش مطرح شد
0

یه ویو باید بسازید که شامل یک اینپوت هست (همان جایی که کاربر باید کد رو وارد کنه) و در آخر این کنترلر این کد ها رو وراد کنید :
هر مقداری که باید ارسال بشه به روت دیگه رو داخل فلش سشن میزاری مثلا number و کاربر رو میفرستی به روتی که ساختی واسه کد ها

$request->session()->flash('number', $number);
            return redirect(route('verify'));

Armin Rahmati
@arminrahmati999 3 سال پیش مطرح شد
0

@eniack
با api دارم کار میکنم


مهدی اردشیر
تخصص : یه برنامه نویس
@mehdi0121 3 سال پیش مطرح شد
0

میتونی از طریق encryptString شماره رو انکریپت کنی بعد توی کوکی یا هدر نگه داری و موقع چک کردن کد بیای اونو دیکریپتش کنی و شماره رو چک کنی
حالا نمی دونم روش خوبی هست یا نه فقط به ذهنم رسیده بودش و روی یه پروژه تمرینی زده بودمش

https://websolutionstuff.com/post/how-to-encrypt-and-decrypt-string-in-laravel-8


برای ارسال پاسخ لازم است وارد شده یا ثبت‌نام کنید

ورود یا ثبت‌نام