Обновить токен после добавления бенефициара Swift - PullRequest
0 голосов
/ 19 сентября 2018

Здравствуйте, у меня проблема с обновлением токена, когда я добавляю пользователя

Сначала я реализую функцию для получения профиля пользователя

//API Get Profile
func loadMemberProfil(completion: ((_ sub : [String: AnyObject]) -> Void)!) {
    //API get profile and Bearer token
    let token = HPWSLoginManager.shared().saveSuccessResponse.token
    let url = URL(string: "http://51.38.36.76:40/api/v1/profile")
    var request = URLRequest(url: url!)
    request.httpMethod = "GET"
    request.addValue("Bearer \(token!)", forHTTPHeaderField: "Authorization")
    //get information in token
    URLSession.shared.dataTask(with: request) { (data, response, error) in
        guard let data = data else { return }
        do {
            let json = try JSONSerialization.jsonObject(with: data, options: .mutableContainers) as! [String: AnyObject]
            let sub = json["sub"] as! [String: AnyObject]
            if completion != nil{
                completion(sub)
            }
        } catch {
            print("error")
        }
        }.resume()
}

Вторая функция для добавления пользователя

// add Beneficiary
func addBeneficiary() {
    var firstNameBeneficiary: String?
    var lastNameBeneficiary: String?
    var numberBeneficiary: String?

    // add value beneficiary
    firstNameBeneficiary = self.firstName.text
    lastNameBeneficiary = self.lastName.text
    numberBeneficiary = self.phoneViewModel?.phoneNumberCompletDisplay()

    let json: [String: Any] = [
        "usernumber": "+224625259239",
        "secretcode": "5555",
        "firstname": firstNameBeneficiary!,
        "lastname": lastNameBeneficiary!,
        "beneficiarynumber": numberBeneficiary!
    ]
    let jsonData = try? JSONSerialization.data(withJSONObject: json)

    //API Add beneficiary and Bearer token
    let token = HPWSLoginManager.shared().saveSuccessResponse.token
    let url = URL(string: "http://51.38.36.76:40/api/v1/addBeneficiary")
    var request = URLRequest(url: url!)
    request.httpMethod = "POST"
    request.addValue("Bearer \(token!)", forHTTPHeaderField: "Authorization")
    request.addValue("application/json", forHTTPHeaderField: "Content-Type")

    request.httpBody = jsonData

    let task = URLSession.shared.dataTask(with: request) { data, response, error in
        do {
            let responseJSON = try JSONSerialization.jsonObject(with: jsonData!, options: []) as! [String: AnyObject]
            print(responseJSON)
        } catch {
            print("error")
        }
    }
    task.resume()
}

Наконец, я извлекаю информацию, введенную пользователем для отправки проверки по его секретному коду (но секретный код вызывает функцию входа в систему, которая автоматически меняет токен)

@IBAction func continueClicked(sender: UIButton) {
    let loginPasswordViewController = HPLoginPasswordViewController(nibNameOrParentNib: nil)
    loginPasswordViewController.keyNotifSuccess = kNotifLoginSucces
    loginPasswordViewController.keyNotifFailed = kNotifLoginPasswordError

    loginPasswordViewController.completion = { (sucess, error) -> Void in
        if sucess {
            self.beneficiarySubject.onNext(HPBeneficiaryModel(firstName: self.firstName.text, lastName: self.lastName.text, tel: self.phoneViewModel?.phoneNumberCompletDisplay(), type: .beneficiary))
            self.navigationController?.popViewController(animated: false)
            self.addBeneficiary()
        }
    }
        // validation secret code
    self.loadMemberProfil { (sub) in
        DispatchQueue.main.async {
            self.navigationController?.pushViewController(loginPasswordViewController, animated: true)
            HPWSLoginManager.shared().phoneNumber = sub["usernumber"] as? String
        }
    }
}

Так что я думаюпроблема обновления токена, потому что на консоли у меня ошибка 403 (неверный пароль) кто-то может мне помочь?

...