Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/omnicode/lara-tools

Useful tools for Laravel
https://github.com/omnicode/lara-tools

laravel utility

Last synced: 2 days ago
JSON representation

Useful tools for Laravel

Awesome Lists containing this project

README

        

# Lara Tools - Convenient tools for Laravel

## Contents

1. LaraUtil
* hasTable
* hasColumn
* getFullColumns
* hashPassword
* verifyPassword
2. ModelExtrasTrait
* saveAssociated

## LaraUtil

LaraUtil contains the following utility methods

### hasTable

Checks if the given table exists - caching the result, returns true or false

```
LaraUtil::hasTable('users')
```

### hasColumn

Checks if the given table has the given column - caching the query, returns true or false

```
LaraUtil::hasColumn('users', 'first_name')
```


### getFullColumns

Accepts the columns list and the table name and adds the table name into columns if does not exist e.g.

```
$columns = ['id', 'first_name', 'users.last_name'];
$columns = LaraUtil::getFullColumns($columns, 'users');

// the final array will look like
['users.id', 'users.first_name', 'users.last_name']
```

### hashPassword

Hashes the given string by bcrypt, however afterwards encrypting the password's hash by application-side key. It also applies `sha256` method (before hashing) to remove bcrypt's length restriction - [more](https://security.stackexchange.com/a/6627/38200)

```
$hashedAndEcryptedPassword = LaraUtil::hashPassword('some password');
```
will be string like this
`eyJpdiI6IlU4amxZaVNCc2xjemlkZUNWRFVhb3c9PSIsInZhbHVlIjoidWs0bmRcL1JFMHk1dUE4Yk9kWFo3b2VSZEJuYXk5NngwUXMxMDBieTdvOVZ6d1JWQ3RObVE3RGZmcHlqYnV1Ymw5OFVKelRlb2JsSllcL21FVlk4WklVNHkzcnl5Ym90T0tJVzNZalRyUmI2dz0iLCJtYWMiOiI2MDE3ZTQ1NGE0NDcwNTY2Yjc3NzAyZmZlOWU4ZDBkMTE4ODNhNTY0YTE2ZmYzNDNkNDA0ZGI2ZWRhZjhjMTA3In0=`

### verifyPassword

Verifies the password hashed by `hashPassword` method above - returns true or false

```
$passwordMatch = verifyPassword('plan text password', $hashedAndEcryptedPassword);
```

## ModelExtrasTrait

ModelExtrasTrait is a trait to be used in Models - provides the following methods

### saveAssociated

`saveAssociated` method is a wrapper method, that allows to save `BelongsToMany` and `HasMany` related models in a single transaction, e.g. suppose we need to save a product with its related categories, we would use

```
Product::saveAssociated($data, ['associated' => 'categories']);
```

the `$data` should be an array like this

```
$data = ['name', 'price', 'categories_ids' => [1, 3, 7]]
```