Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Improve security of database url #313

Merged
merged 15 commits into from
Jul 16, 2024
36 changes: 19 additions & 17 deletions frontend/src/Components/Organisms/Details.elm
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,6 @@ import Libs.Html.Attributes exposing (ariaHidden, ariaLabel, css, role)
import Libs.List as List
import Libs.Maybe as Maybe
import Libs.Models.Bytes as Bytes
import Libs.Models.DatabaseKind as DatabaseKind
import Libs.Models.HtmlId exposing (HtmlId)
import Libs.Models.Notes exposing (Notes)
import Libs.Models.Tag as Tag exposing (Tag)
Expand Down Expand Up @@ -816,37 +815,40 @@ viewSource openDataExplorer table column rows origin =
SourceKind.DatabaseConnection _ ->
Icon.solid Icons.sources.database "opacity-50 mr-1" |> Tooltip.r "Database source"

SourceKind.SqlLocalFile _ _ _ ->
SourceKind.SqlLocalFile _ ->
Icon.solid Icons.sources.sql "opacity-50 mr-1" |> Tooltip.r "SQL source"

SourceKind.SqlRemoteFile _ _ ->
SourceKind.SqlRemoteFile _ ->
Icon.solid Icons.sources.sql "opacity-50 mr-1" |> Tooltip.r "SQL source"

SourceKind.PrismaLocalFile _ _ _ ->
SourceKind.PrismaLocalFile _ ->
Icon.solid Icons.sources.prisma "opacity-50 mr-1" |> Tooltip.r "Prisma source"

SourceKind.PrismaRemoteFile _ _ ->
SourceKind.PrismaRemoteFile _ ->
Icon.solid Icons.sources.prisma "opacity-50 mr-1" |> Tooltip.r "Prisma source"

SourceKind.JsonLocalFile _ _ _ ->
SourceKind.JsonLocalFile _ ->
Icon.solid Icons.sources.json "opacity-50 mr-1" |> Tooltip.r "JSON source"

SourceKind.JsonRemoteFile _ _ ->
SourceKind.JsonRemoteFile _ ->
Icon.solid Icons.sources.json "opacity-50 mr-1" |> Tooltip.r "JSON source"

SourceKind.AmlEditor ->
Icon.solid Icons.sources.aml "opacity-50 mr-1" |> Tooltip.r "AML source"
, text (origin.name ++ (rows |> Maybe.mapOrElse (\r -> " (" ++ String.fromInt r ++ " rows)") ""))
, origin.db
|> Maybe.andThen DatabaseKind.fromUrl
|> Maybe.map (\kind -> column |> Maybe.mapOrElse (DbQuery.exploreColumn kind table) (DbQuery.exploreTable kind table))
|> Maybe.map
(\query ->
button [ type_ "button", onClick (openDataExplorer origin.id query), class "ml-1" ]
[ Icon.solid Icon.ArrowCircleRight "opacity-50" ]
|> Tooltip.r "Browse data"
)
|> Maybe.withDefault (text "")
, case origin.kind of
SourceKind.DatabaseConnection db ->
let
query : SqlQueryOrigin
query =
column |> Maybe.mapOrElse (DbQuery.exploreColumn db.kind table) (DbQuery.exploreTable db.kind table)
in
button [ type_ "button", onClick (openDataExplorer origin.id query), class "ml-1" ]
[ Icon.solid Icon.ArrowCircleRight "opacity-50" ]
|> Tooltip.r "Browse data"

loicknuchel marked this conversation as resolved.
Show resolved Hide resolved
_ ->
text ""
]


Expand Down
5 changes: 3 additions & 2 deletions frontend/src/Components/Organisms/TableRow.elm
Original file line number Diff line number Diff line change
Expand Up @@ -24,7 +24,7 @@ import Libs.Html.Attributes exposing (ariaExpanded, ariaHaspopup, css)
import Libs.Html.Events exposing (PointerEvent, onContextMenu, onDblClick, onPointerUp)
import Libs.List as List
import Libs.Maybe as Maybe
import Libs.Models.DatabaseKind as DatabaseKind
import Libs.Models.DatabaseKind as DatabaseKind exposing (DatabaseKind(..))
import Libs.Models.DateTime as DateTime
import Libs.Models.HtmlId exposing (HtmlId)
import Libs.Models.Notes exposing (Notes)
Expand All @@ -45,6 +45,7 @@ import Models.Project.ColumnName exposing (ColumnName)
import Models.Project.ColumnPath as ColumnPath exposing (ColumnPath, ColumnPathStr)
import Models.Project.ColumnRef exposing (ColumnRef)
import Models.Project.ColumnType exposing (ColumnType)
import Models.Project.DatabaseUrlStorage as DatabaseUrlStorage
import Models.Project.Relation as Relation exposing (Relation)
import Models.Project.RowPrimaryKey as RowPrimaryKey exposing (RowPrimaryKey)
import Models.Project.RowValue exposing (RowValue)
Expand Down Expand Up @@ -985,7 +986,7 @@ docSource : Source
docSource =
{ id = SourceId.one
, name = "azimutt_dev"
, kind = DatabaseConnection "postgresql://postgres:postgres@localhost:5432/azimutt_dev"
, kind = DatabaseConnection { kind = PostgreSQL, url = Just "postgresql://postgres:postgres@localhost:5432/azimutt_dev", storage = DatabaseUrlStorage.Project }
, content = Array.empty
, tables =
[ docTable "public" "users" [ ( "id", "uuid", False ), ( "slug", "varchar", False ), ( "name", "varchar", False ), ( "email", "varchar", False ), ( "provider", "varchar", True ), ( "provider_uid", "varchar", True ), ( "avatar", "varchar", False ), ( "github_username", "varchar", True ), ( "twitter_username", "varchar", True ), ( "is_admin", "boolean", False ), ( "hashed_password", "varchar", True ), ( "last_signin", "timestamp", False ), ( "created_at", "timestamp", False ), ( "updated_at", "timestamp", False ), ( "confirmed_at", "timestamp", True ), ( "deleted_at", "timestamp", True ), ( "data", "json", False ), ( "onboarding", "json", False ), ( "provider_data", "json", True ), ( "tags", "varchar[]", False ) ]
Expand Down
Loading
Loading