Merge remote-tracking branch 'upstream/develop' into admin-create-users
[akkoma] / lib / pleroma / web / mongooseim / mongoose_im_controller.ex
1 # Pleroma: A lightweight social networking server
2 # Copyright © 2017-2019 Pleroma Authors <https://pleroma.social/>
3 # SPDX-License-Identifier: AGPL-3.0-only
4
5 defmodule Pleroma.Web.MongooseIM.MongooseIMController do
6 use Pleroma.Web, :controller
7 alias Comeonin.Pbkdf2
8 alias Pleroma.Repo
9 alias Pleroma.User
10
11 def user_exists(conn, %{"user" => username}) do
12 with %User{} <- Repo.get_by(User, nickname: username, local: true) do
13 conn
14 |> json(true)
15 else
16 _ ->
17 conn
18 |> put_status(:not_found)
19 |> json(false)
20 end
21 end
22
23 def check_password(conn, %{"user" => username, "pass" => password}) do
24 with %User{password_hash: password_hash} <-
25 Repo.get_by(User, nickname: username, local: true),
26 true <- Pbkdf2.checkpw(password, password_hash) do
27 conn
28 |> json(true)
29 else
30 false ->
31 conn
32 |> put_status(403)
33 |> json(false)
34
35 _ ->
36 conn
37 |> put_status(:not_found)
38 |> json(false)
39 end
40 end
41 end